C获取侦听服务器的IP

时间:2012-03-25 13:15:08

标签: c sockets

我正在使用C套接字编写客户端/服务器程序。我指定服务器可以通过在sockaddr_in.sin_addr.s_addr中使用INADDR_ANY来侦听任何网络接口。这相当于IP为0.0.0.0。我可以获得服务器正在监听的实际IP吗? (例如192.168.1.100)

2 个答案:

答案 0 :(得分:1)

将侦听套接字绑定到INADDR_ANY时,套接字将侦听所有可用的本地IP。无法从套接字确定它正在侦听哪些IP。如果您需要该信息,则必须单独枚举本地IP(在这种情况下,如果需要检索预接受绑定详细信息,则可以单独bind()将每个IP分别放入其自己的套接字。但是,一旦accept()返回已建立的客户端连接,您就可以在接受的套接字上使用getsockname()来了解哪个特定的IP接受了该连接。

答案 1 :(得分:1)

我终于找到了solution that works

修改:链接已关闭,请参阅:Internet Archive link

希望它能像对我一样对其他人有所帮助。