NexusForce 1.0.0
A Modern C++ Library with extended functionality, web components, and utility libraries
载入中...
搜索中...
未找到
ip_socket.hpp
浏览该文件的文档.
1#ifndef NEFORCE_NETWORK_IP_SOCKET_HPP__
2#define NEFORCE_NETWORK_IP_SOCKET_HPP__
3
11
13NEFORCE_BEGIN_NAMESPACE__
14
19
20#pragma pack(push, 1)
40struct ip_header {
51
52 NEFORCE_NODISCARD uint8_t version() const noexcept { return version_ihl >> 4; }
53 NEFORCE_NODISCARD uint8_t ihl() const noexcept { return version_ihl & 0x0F; }
54};
55#pragma pack(pop)
56
57
73class NEFORCE_API ip_socket : public socket_base {
74protected:
75 int family_ = AF_UNSPEC;
76
77 void open_ip(int family, int type, int protocol);
78
79public:
83 ip_socket() = default;
84
89 explicit ip_socket(const native_handle_type fd) noexcept :
90 socket_base(fd) {}
91
92 ip_socket(ip_socket&&) noexcept = default;
93 ip_socket& operator=(ip_socket&&) noexcept = default;
94
95 ip_socket(const ip_socket&) = delete;
96 ip_socket& operator=(const ip_socket&) = delete;
97
101 ~ip_socket() override = default;
102
107 NEFORCE_NODISCARD int address_family() const noexcept { return family_; }
108
113 NEFORCE_NODISCARD bool is_ipv4() const noexcept { return family_ == AF_INET; }
114
119 NEFORCE_NODISCARD bool is_ipv6() const noexcept { return family_ == AF_INET6; }
120
130 virtual void connect(const ip_address& endpoint);
131
138 bool close() noexcept override {
139 family_ = AF_UNSPEC;
140 return socket_base::close();
141 }
142};
143 // SocketBase
145
146NEFORCE_END_NAMESPACE__
147#endif // NEFORCE_NETWORK_IP_SOCKET_HPP__
IP地址封装类
IP协议族Socket基类
bool is_ipv4() const noexcept
检查是否为IPv4 socket
bool is_ipv6() const noexcept
检查是否为IPv6 socket
bool close() noexcept override
关闭socket
int address_family() const noexcept
获取地址族
virtual void connect(const ip_address &endpoint)
连接到远程端点(TCP客户端)
int family_
地址族
ip_socket(const native_handle_type fd) noexcept
从原生句柄构造
ip_socket()=default
默认构造函数
virtual bool close() noexcept
关闭socket
::UINT_PTR native_handle_type
平台原生句柄类型
socket_base()
默认构造函数
unsigned char uint8_t
8位无符号整数类型
unsigned int uint32_t
32位无符号整数类型
unsigned short uint16_t
16位无符号整数类型
Socket基础类实现
IPv4头部结构定义
uint8_t ttl
生存时间
uint16_t frag_off
标志和片偏移
uint8_t protocol
上层协议类型
uint8_t tos
服务类型
uint8_t version_ihl
版本(高4位) + 头部长度(低4位)
uint16_t checksum
头部校验和
uint32_t src_addr
源IP地址
uint16_t id
标识符
uint16_t total_len
IP数据包总长度
uint32_t dest_addr
目的IP地址