我是C语言的初学者,我的教科书涵盖了一些C语言的网络编程,并指出网络程序将IP地址存储在IP地址结构中
/* Internet address structure */
struct in_addr {
unsigned int s_addr; /* Network byte order (big-endian) */
};我很困惑,我们不能只存储一个32位的整数吗?
发布于 2018-12-21 07:17:33
in_addr表示IPv4地址,它实际上可以容纳32位整数。
但是,还有其他类型的套接字地址不能这样做,例如IPv6地址。
每种类型的套接字地址都使用自己的结构类型:
适用于IPv4
in6_addr的in_addr适用于IPv6char[]的UNIX paths通常包装在相应的sockaddr结构中:
适用于IPv4
sockaddr_in6的sockaddr_in适用于IPv6sockaddr_un的UNIX这是您在bind()、connect()、accept()、sendto()、recvfrom()等套接字API中使用的。
你很少需要直接使用像in_addr这样的东西。通常,您可以将其与需要通过in_addr结构传递IPv4地址的API结合使用。
https://stackoverflow.com/questions/53863574
复制相似问题