套接字编程——为什么我们不把sin_family转换成网络顺序呢?
Socket programming - why do we not convert sin_family to network order?
下面是一个有效的套接字创建示例(在 C 中):
// Construct local address structure
struct sockaddr_in servAddr; // Local address
memset(&servAddr, 0, sizeof(servAddr)); // Zero out structure
servAddr.sin_family = AF_INET; // IPv4 address family
servAddr.sin_addr.s_addr = htonl(INADDR_ANY); // Any incoming interface
servAddr.sin_port = htons(servPort); // Local port
我们需要将地址和端口转换为网络顺序,而不是地址族。这是为什么?
sin_family
不通过网络发送,因此无需使用网络字节顺序。它只是您操作系统的本地标志。它指示 struct sockaddr *
指针的多态类型,因为 IPv4 不是唯一的格式。例如,AF_UNIX
地址不会获取 IP 地址和端口字段。
下面是一个有效的套接字创建示例(在 C 中):
// Construct local address structure
struct sockaddr_in servAddr; // Local address
memset(&servAddr, 0, sizeof(servAddr)); // Zero out structure
servAddr.sin_family = AF_INET; // IPv4 address family
servAddr.sin_addr.s_addr = htonl(INADDR_ANY); // Any incoming interface
servAddr.sin_port = htons(servPort); // Local port
我们需要将地址和端口转换为网络顺序,而不是地址族。这是为什么?
sin_family
不通过网络发送,因此无需使用网络字节顺序。它只是您操作系统的本地标志。它指示 struct sockaddr *
指针的多态类型,因为 IPv4 不是唯一的格式。例如,AF_UNIX
地址不会获取 IP 地址和端口字段。