套接字编程 - 为什么我们不将sin_family转换为网络顺序?

时间:2015-05-31 19:46:30

标签: c sockets network-programming

以下是有效套接字创建的示例(在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

我们需要将地址和端口转换为网络顺序,而不是地址系列。那是为什么?

1 个答案:

答案 0 :(得分:2)

sin_family未通过网络发送,因此无需使用网络字节顺序。它只是您操作系统的本地标志。它表示struct sockaddr *指针的多态类型,因为IPv4不是唯一的格式。例如,AF_UNIX地址无法获取IP地址和端口字段。