Distribution_Service/CC_SDK/Include/Module/Comm/CCNetwork.h

144 lines
4.8 KiB
C
Raw Normal View History

2025-11-11 17:46:19 +08:00
#ifndef CC_NETWORK_H
#define CC_NETWORK_H
#include "Socket/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