我是C语言的初学者,我的教科书介绍了一些C语言的网络编程,并指出网络程序将IP地址存储在IP地址结构中
/* Internet address structure */
struct in_addr {
unsigned int s_addr; /* Network byte order (big-endian) */
};
我很困惑,我们不能只存储32位整数吗?
答案 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结合使用。