【发布时间】:2012-03-25 13:15:07
【问题描述】:
我正在使用 C 套接字编写客户端/服务器程序。我指定服务器可以通过在 sockaddr_in.sin_addr.s_addr 中使用 INADDR_ANY 来侦听任何网络接口。这相当于 0.0.0.0 的 IP。我是否有可能获得服务器正在侦听的实际 IP? (例如 192.168.1.100)
【问题讨论】:
-
建立连接之前还是之后?服务器可能正在监听多个地址。
-
之前。就我而言,我只会拥有一个 IP。只是我让系统决定。但我还是想知道它决定了什么。
-
服务器将监听所有可用的接口。即使是一个接口也可能有多个 IP 地址。
-
那么这是枚举您的网络接口及其地址的一种特殊情况——当然,您也有环回设备和地址。看起来这应该会有所帮助:stackoverflow.com/questions/1160963/…
-
不涉及多个接口/IP 的复杂性......假设我的机器的 IP 地址为 192.168.1.100。我只想在绑定套接字后以编程方式检索它。 @blueshift 的链接可能会有所帮助,但我认为可能有更简单的解决方案。