【发布时间】:2013-01-20 14:35:07
【问题描述】:
我打开了一个 TCP 套接字服务器(我省略了一些东西,它取自 here
sockfd = socket(p->ai_family, p->ai_socktype,
p->ai_protocol))
是否可以从 sockfd 获取服务器的 IP 地址?如果不是,我应该去哪里看?
编辑:我想知道服务器的地址(这是在任何客户端连接之前)。
【问题讨论】:
-
IP哪一端的地址?是您自己,还是您连接的地方?还是两者兼有?!
-
此套接字未连接,因此无法获取地址。在
accept之后,getsockname会有所帮助。 -
accept()本身(可选)返回连接的对等方的地址(请参阅man accept)。 -
成功调用
socket()返回的值没有连接到任何客户端,也没有绑定到任何接口,因此没有可以确定的客户端IP地址和服务器端IP地址在任何地方形成。 -
如果
p不是NULL,则紧接在for()循环之后的IP 地址是p->ai_addr, p->ai_addrlen。这仅仅是因为这就是代码binds 的套接字。
标签: c sockets network-programming ip