笔记-TCP/IP 网络套接字地址结构
大多数套接字函数都需要一个指向套接字地址结构指针作为参数。每一个协议簇都定义专属的套接字地址结构,以sockaddr_为前缀。
IPv4 套接字地址结构
IPv4 套接字地址结构通常也称为 “网际套接字地址结构”,以 sockaddr_in 命名,16个字节。定义在 <netinet/in.h> 中。
struct sockaddr_in {
sa_family_t sin_family; /* AF_INET */
in_port_t sin_port; /* Port number. */
struct in_addr sin_addr; /* Internet address. */
/* Pad to size of `struct sockaddr'. */
unsigned char sin_zero[sizeof (struct sockaddr) -
sizeof (sa_family_t) -
sizeof (in_port_t) -
sizeof (struct in_addr)];
};
typedef uint32_t in_addr_t;
struct in_addr {
in_addr_t s_addr; /* IPv4 address */
};
- sin_family(协议簇)、sin_port(端口号)、 sin_addr(IP地址)三个字段是 POSIX 规范规定必须有的。
- IPv4 地址、 TCP 或 UDP 端口号在套接