[英]why Network programs store IP addresses in the IP address structure
I'm a beginner in C, my textbooks cover some network programming in C, and states that Network programs store IP addresses in the IP address structure 我是C语言的初学者,我的教科书涵盖了一些C语言的网络编程,并指出网络程序将IP地址存储在IP地址结构中
/* Internet address structure */
struct in_addr {
unsigned int s_addr; /* Network byte order (big-endian) */
};
I'm confused, can't we just store a 32 bit integer? 我很困惑,我们不能只存储32位整数吗?
in_addr
represents an IPv4 address, which can indeed fit in a 32bit integer. in_addr
表示一个IPv4地址,它确实可以容纳32位整数。
But, there are other types of socket addresses that cannot, such as IPv6 addresses. 但是,还有其他类型的套接字地址不能使用,例如IPv6地址。
Each type of socket address uses its own struct type: 每种类型的套接字地址都使用自己的struct类型:
in_addr
for IPv4 用于IPv4的in_addr
in6_addr
for IPv6 用于IPv6的in6_addr
char[]
for UNIX paths char[]
用于UNIX路径 Usually wrapped inside a corresponding sockaddr
struct: 通常包装在相应的sockaddr
结构中:
sockaddr_in
for IPv4 sockaddr_in
用于IPv4 sockaddr_in6
for IPv6 sockaddr_in6
用于IPv6 sockaddr_un
for UNIX sockaddr_un
用于UNIX Which is what you use with socket APIs like bind()
, connect()
, accept()
, sendto()
, recvfrom()
, etc. 这是与套接字API(如bind()
, connect()
, accept()
, sendto()
, recvfrom()
等recvfrom()
。
Very rarely would you ever need to use something like in_addr
directly by itself. 您很少需要直接直接使用in_addr
东西。 Typically you would use it in conjunction with an API that requires an IPv4 address to be passed via the in_addr
struct. 通常,您可以将其与需要通过in_addr
结构传递IPv4地址的API结合使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.