确定P2P应用程序中的本地IP地址

时间:2011-01-11 11:12:58

标签: winapi sockets udp winsock

我正在开发一个P2P应用程序,其中对等方与服务器通信以通知其私有和公共IP。该应用程序使用UDP进行通信。

要获取私有IP,客户端使用gethostbyname并将其绑定到该IP。问题是系统有多个NIC时。问题是当其中一个NIC未连接到Internet时。所以为了避免它,我使用INADDR_ANY并绑定它。

现在我需要获取本地IP地址以通知服务器。是否有任何API可以告诉我哪个NIC的IP地址是活动的?

1 个答案:

答案 0 :(得分:1)

您需要绑定到显式IP地址而不是INADDR_ANY,因为绑定到INADDR_ANY意味着在套接字上调用getsockname()以获取本地地址将只返回{{1 }}

因此,您需要做的是迭代可用的端点(使用INADDR_ANY)并在每个端点上创建一个套接字。如果您稍后致电getaddrinfo(),这些地址将为您提供正确的地址。