为什么网络程序将IP地址存储在IP地址结构中

时间:2018-12-20 06:38:01

标签: c sockets ip

我是C语言的初学者,我的教科书介绍了一些C语言的网络编程,并指出网络程序将IP地址存储在IP地址结构中

/* Internet address structure */
struct in_addr {
unsigned int s_addr; /* Network byte order (big-endian) */
};

我很困惑,我们不能只存储32位整数吗?

1 个答案:

答案 0 :(得分:0)

in_addr表示一个IPv4地址,它确实可以容纳32位整数。

但是,还有其他类型的套接字地址,例如IPv6地址。

每种类型的套接字地址都使用其自己的struct类型:

  • in_addr for IPv4
  • in6_addr for IPv6
  • char[]用于UNIX路径

通常包装在相应的sockaddr结构中:

  • sockaddr_in for IPv4
  • sockaddr_in6 for IPv6
  • sockaddr_un for UNIX

bind()connect()accept()sendto()recvfrom()等套接字API配合使用的是

您很少很少需要直接使用in_addr之类的东西。通常,您可以将其与需要通过in_addr结构传递IPv4地址的API结合使用。