PF_INET。PF_INET6。#include <sys/socket.h> int PF_INET; // IPv4 int PF_INET6; // IPv6
Internet 命名空間下地址包含兩部分:機器地址 + 端口號,均須遵循網絡字節序(大端序)。
#include <netinet/in.h>
struct sockaddr_in {
sa_family_t sin_family; // AF_INET
struct in_addr sin_addr; // IP 地址
uint16_t sin_port; // 端口號
};
struct in_addr { uint32_t s_addr; };
struct sockaddr_in6 {
sa_family_t sin6_family; // AF_INET6
struct in6_addr sin6_addr; // 128 位地址
uint32_t sin6_flowinfo; // 流信息(未廣泛實現)
uint16_t sin6_port; // 端口
};
128.52.46.32,用 uint32_t 或 struct in_addr;IPv6 如 5f03:1200:836f:c100::1,用 struct in6_addr。www.gnu.org,需經 DNS 解析。// IPv4 INADDR_LOOPBACK // 127.0.0.1 INADDR_ANY // 0.0.0.0 任意地址 INADDR_BROADCAST // 255.255.255.255 廣播 INADDR_NONE // 錯誤標記 // IPv6 in6addr_loopback / IN6ADDR_LOOPBACK_INIT // ::1 in6addr_any / IN6ADDR_ANY_INIT // ::
#include <netinet/in.h> IPPORT_RESERVED // 1024,保留給特權服務 IPPORT_USERRESERVED // 5000,用戶顯式使用,系統不自動分配
IPPORT_RESERVED:需 root 權限綁定。IPPORT_USERRESERVED:安全範圍,供普通應用顯式綁定。