c - 理解一条C套接字指令

标签 c sockets struct

这是我还没有完全理解的说法。

serv_addr.sin_addr.s_addr = ((struct in_addr*)(hp->h_addr)) -> s_addr;

这是否意味着:

  1. 我将 hp 放入 h_addr
  2. hp->h_addrstruct in_addr* 类型转换
  3. 所有这些都已复制到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/

相关文章:

不使用比较运算符比较两个数字

c - 覆盖读取功能,但当文件描述符为 3 或 4 时我遇到问题

c++ - 使用 C++ 服务器-客户端的 GET 和 PUT 命令

java - 返回已连接的套接字返回null

go - 消失的结构组件的赋值

c++ - 我们可以使用关键字 struct 来实现 OOPS 的所有概念吗?

c - 未知 "for"语句 (C)

c++ - C 和 C++ 的数组大小声明差异

node.js - 在 3G 网络上监听来自连接对象的 TCP 连接

swift - 将我的 Struct 放在哪里以保持类独立?