Service_NSSM/CC_SDK/Include/Module/Comm/CCNetwork.h
2025-09-27 14:24:18 +08:00

144 lines
4.8 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef CC_NETWORK_H
#define CC_NETWORK_H
#include "CCSocket.h"
#include "CC.h"
/**
* @namespace CTL
* @brief 该命名空间包含与网络通信相关的类和函数。
*/
namespace CTL {
/**
* @class Packets
* @brief Packets 类用于封装数据包和主机信息,以便进行网络传输。
*/
class Packets {
public:
ByteArray data{}; /**< @brief 存储数据包的字节数据。 */
CCHostInfo info{}; /**< @brief 存储数据包的源主机信息。 */
public:
/**
* @brief 默认构造函数,初始化数据包长度为 1024。
*/
Packets() {
length = 1024;
}
/**
* @brief 带参数的构造函数。
* @param len 指定的数据包长度。
* @param host 主机信息,默认为 "0.0.0.0:0"。
*/
explicit Packets(const ByteHander len, const CCHostInfo& host = {"0.0.0.0", 0}) {
length = len;
info = host;
}
/**
* @brief 获取当前数据包的长度。
* @return 返回数据的大小。
*/
[[nodiscard]] ByteHander GetLength() const {
return data.size();
}
/**
* @brief 将数据包内容转换为字符串对象。
* @return 返回数据包内容的字符串表示形式。
*/
String to_String() const;
/**
* @brief 将数据包内容转换为字符串对象并清空原始数据包内容。
* @return 返回数据包内容的字符串表示形式。
*/
String to_String();
private:
ByteHander length = 0; /**< @brief 存储数据包的长度。 */
};
/**
* @class Network
* @brief Network 类用于管理网络连接和数据传输,继承自 Socket 类。
*/
class Network : public Socket {
public:
using Socket::Socket; /**< @brief 继承 Socket 类的构造函数。 */
public:
/**
* @brief 使用 Socket 对象构造。
* @param sock 用于初始化 Network 对象的 Socket 对象。
*/
Network(const Socket& sock);
/**
* @brief 复制构造函数。
* @param sock 要复制的 Network 对象。
*/
Network(const Network& sock);
/**
* @brief 使用 Socket 对象构造。
* @param sock 用于初始化 Network 对象的 Socket 对象。
*/
Network(Socket& sock);
/**
* @brief 复制构造函数。
* @param sock 要复制的 Network 对象。
*/
Network(Network& sock);
/**
* @brief 指定端口和网络类型构造。
* @param Port 要绑定的端口号。
* @param toru 网络类型,默认为 TCP。
* @param ip IP 版本,默认为 IPV4。
*/
explicit Network(int Port, TORU toru = TCP, IPVX ip = IPV4);
/**
* @brief 仅指定网络类型构造。
* @param toru 网络类型,默认为 TCP。
* @param ip IP 版本,默认为 IPV4。
*/
explicit Network(TORU toru = TCP, IPVX ip = IPV4);
/**
* @brief 使用指定的类型和 IP 版本初始化网络。
* @param toru 网络类型,默认为 TCP。
* @param ip IP 版本,默认为 IPV4。
*/
void Initialize(TORU toru = TCP, IPVX ip = IPV4);
/**
* @brief 绑定到指定地址和端口。
* @param address 要绑定的网络地址。
* @param Port 要绑定的端口号,默认为 0。
* @return 成功返回 true否则返回 false。
*/
bool Bind(CCAddress address, unsigned short Port = 0);
/**
* @brief 绑定到指定 IP 和端口。
* @param IP 要绑定的 IP 地址。
* @param Port 要绑定的端口号。
* @return 成功返回 true否则返回 false。
*/
bool Bind(const CTL::String& IP, unsigned short Port);
/**
* @brief 连接到指定 IP 和端口。
* @param IP 要连接的 IP 地址。
* @param Port 要连接的端口号。
* @return 成功返回 true否则返回 false。
*/
bool Connect(const CTL::String& IP, unsigned short Port);
/**
* @brief 接收数据包。
* @param packets 接收到的数据包。
* @return 成功返回 true否则返回 false。
*/
bool ReceiveData(Packets& packets);
/**
* @brief 发送数据包。
* @param packets 要发送的数据包。
* @return 成功返回 true否则返回 false。
*/
bool SendPackets(Packets& packets);
private:
TORU TorU_ = TCP; /**< @brief 存储当前网络类型,默认为 TCP。 */
};
}
#endif