常用网络地址结构
sockaddr
通用地址结构。
1 | struct sockaddr { |
通常不直接使用,而是作为函数参数类型。
例如:
1 | bind(sockfd, reinterpret_cast<sockaddr*>(&addr), sizeof(addr)); |
sockaddr_in
IPv4 地址结构。
1 |
|
常用示例:
1 | sockaddr_in addr{}; |
in_addr
IPv4 地址结构。
1 | struct in_addr { |
设置 IP:
1 | inet_pton(AF_INET, "127.0.0.1", &addr.sin_addr); |
sockaddr_in6
IPv6 地址结构。
1 | struct sockaddr_in6 { |
示例:
1 | sockaddr_in6 addr6{}; |
sockaddr_storage
通用地址存储结构,可以容纳 IPv4 或 IPv6。
1 | struct sockaddr_storage { |
常用于同时支持 IPv4 和 IPv6 的程序。
字节序转换函数
网络传输使用大端字节序,即网络字节序。
常用函数:
| 函数 | 说明 |
|---|---|
| htons | host to network short,16 位 |
| htonl | host to network long,32 位 |
| ntohs | network to host short |
| ntohl | network to host long |
示例:
1 | uint16_t port = 8080; |
IP 地址转换函数
inet_pton
字符串 IP 转二进制。
1 | inet_pton(AF_INET, "127.0.0.1", &addr.sin_addr); |
inet_ntop
二进制 IP 转字符串。
1 | char ip[INET_ADDRSTRLEN]; |
示例:
1 | sockaddr_in client{}; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 tsengcode!



