struct sockaddr
是一个通用的地址结构,用于表示各种类型的网络地址,包括 IPv4、IPv6、Unix 域等。它定义如下:
struct sockaddr {
unsigned short sa_family; // 地址族,如 AF_INET 表示 IPv4
char sa_data[14]; // 地址数据
};
而 struct sockaddr_in
是在 struct sockaddr
的基础上针对 IPv4 地址进行特定定义的结构体,它包含了 IP 地址和端口号信息。它定义如下:
struct sockaddr_in {
short sin_family; // 地址族,固定为 AF_INET
unsigned short sin_port; // 端口号
struct in_addr sin_addr; // IPv4 地址结构
char sin_zero[8]; // 填充位,用于补齐长度与 sockaddr 相同
};
struct in_addr {
unsigned long s_addr; // 存储 IP 地址的无符号长整型变量
};
因此,struct sockaddr_in
主要用于表示 IPv4 的地址信息,而 struct sockaddr
则是一个更通用的地址结构,在不同协议族之间转换时使用。
内容由零声教学AI助手提供,问题来源于学员提问