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)
53#pragma pack(pop)
54
55
71class NEFORCE_API ip_socket : public socket_base {
72protected:
73 int family_ = AF_UNSPEC;
74
75 void open_ip(int family, int type, int protocol);
76
77public:
81 ip_socket() = default;
82
87 explicit ip_socket(const native_handle_type fd) noexcept :
88 socket_base(fd) {}
89
90 ip_socket(ip_socket&&) noexcept = default;
91 ip_socket& operator=(ip_socket&&) noexcept = default;
92
93 ip_socket(const ip_socket&) = delete;
94 ip_socket& operator=(const ip_socket&) = delete;
95
99 ~ip_socket() override = default;
100
105 NEFORCE_NODISCARD int address_family() const noexcept { return family_; }
106
111 NEFORCE_NODISCARD bool is_ipv4() const noexcept { return family_ == AF_INET; }
112
117 NEFORCE_NODISCARD bool is_ipv6() const noexcept { return family_ == AF_INET6; }
118
128 virtual void connect(const ip_address& endpoint);
129
136 bool close() noexcept override {
137 family_ = AF_UNSPEC;
138 return socket_base::close();
139 }
140};
141 // Network
143
144NEFORCE_END_NAMESPACE__
145#endif // NEFORCE_NETWORK_IP_SOCKET_HPP__
IP地址封装类
IP协议族Socket基类
bool close() noexcept override
关闭socket
NEFORCE_NODISCARD bool is_ipv6() const noexcept
检查是否为IPv6 socket
virtual void connect(const ip_address &endpoint)
连接到远程端点(TCP客户端)
int family_
地址族
NEFORCE_NODISCARD bool is_ipv4() const noexcept
检查是否为IPv4 socket
ip_socket(const native_handle_type fd) noexcept
从原生句柄构造
NEFORCE_NODISCARD int address_family() const noexcept
获取地址族
ip_socket()=default
默认构造函数
int native_handle_type
平台原生句柄类型
virtual bool close() noexcept
关闭socket
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
服务类型
uint16_t checksum
头部校验和
uint8_t version
IP版本号
uint32_t src_addr
源IP地址
uint8_t ihl
IP头部长度
uint16_t id
标识符
uint16_t total_len
IP数据包总长度
uint32_t dest_addr
目的IP地址