NexusForce 1.0.0
A rigorously engineered full-stack C++ backend library.
载入中...
搜索中...
未找到
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 family family_ = family::UNDEF;
76
77 void open_ip(family f, type t, protocol p);
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
106 NEFORCE_NODISCARD family address_family() const noexcept { return family_; }
107
112 NEFORCE_NODISCARD bool is_ipv4() const noexcept { return family_ == family::INET4; }
113
118 NEFORCE_NODISCARD bool is_ipv6() const noexcept { return family_ == family::INET6; }
119
129 virtual void connect(const ip_address& endpoint);
130
137 bool close() noexcept override {
138 family_ = family::UNDEF;
139 return socket_base::close();
140 }
141};
142 // SocketBase
144
145NEFORCE_END_NAMESPACE__
146#endif // NEFORCE_NETWORK_IP_SOCKET_HPP__
IP地址封装类
IP协议族Socket基类
family address_family() const noexcept
获取地址族
family family_
地址族
bool is_ipv4() const noexcept
检查是否为IPv4 socket
virtual void connect(const ip_address &endpoint)
连接到远程端点(TCP客户端)
ip_socket()=default
默认构造函数
ip_socket(const native_handle_type fd) noexcept
从原生句柄构造
bool is_ipv6() const noexcept
检查是否为IPv6 socket
bool close() noexcept override
关闭socket
type
socket 类型枚举
uintptr_t native_handle_type
平台原生句柄类型
protocol
socket 协议枚举
virtual bool close() noexcept
关闭socket
ip_address::family family
网络地址族类型
socket_base()
默认构造函数
unsigned int uint32_t
32位无符号整数类型
unsigned char uint8_t
8位无符号整数类型
unsigned short uint16_t
16位无符号整数类型
Socket基础类实现
IPv4头部结构定义
uint8_t protocol
上层协议类型
uint32_t dest_addr
目的IP地址
uint16_t checksum
头部校验和
uint8_t version_ihl
版本(高4位) + 头部长度(低4位)
uint8_t ttl
生存时间
uint32_t src_addr
源IP地址
uint8_t tos
服务类型
uint16_t id
标识符
uint16_t frag_off
标志和片偏移
uint16_t total_len
IP数据包总长度