这是我还没有完全理解的说法。
serv_addr.sin_addr.s_addr = ((struct in_addr*)(hp->h_addr)) -> s_addr;
这是否意味着:
- 我将
hp
放入h_addr
hp->h_addr
的struct in_addr*
类型转换- 所有这些都已复制到
s_addr
所以 serv_addr.sin_addr.s_addr 包含主机名和所选主机的 ip 地址。
对吗?
(PS:hp 是 struct hostent *hp ; hp=gethostbyname(argv[1]);
)
最佳答案
你需要了解the arrow operator .
本质上,当您拥有指向该结构的指针时,它使您可以访问该结构的成员。
因此,hp->h_addr
允许您访问 hostent
结构的 h_addr
成员,hp
指着。然后,将该成员转换为 in_addr *
并对其取消引用,以便您可以访问 in_addr
结构的 s_addr
成员。
关于c - 理解一条C套接字指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11019605/