sockaddr
是一个通用的套接字地址结构体,在网络编程中常用于存储和传递套接字地址信息。它是 POSIX 标准定义的数据结构。
以下是 sockaddr
的定义:
struct sockaddr {
sa_family_t sa_family; // 地址族类型,如 AF_INET、AF_INET6
char sa_data[14]; // 地址数据,具体格式根据地址族类型而定
};
其中 sa_family
字段指定了地址族(Address Family)类型,例如 AF_INET
表示 IPv4 地址族,AF_INET6
表示 IPv6 地址族等。不同的地址族类型对应不同的地址结构。
在实际使用中,为了能够更好地兼容不同的地址族类型和协议,通常会使用 struct sockaddr_storage
结构体来代替 struct sockaddr
。
struct sockaddr_storage {
sa_family_t ss_family; // 地址族类型
char __ss_padding[128 - sizeof(sa_family_t)]; // 填充字节
};
这里通过使用 __ss_padding
来保证 sockaddr_storage
结构体的大小足够容纳任何可能的套接字地址。
内容由零声教学AI助手提供,问题来源于学员提问