获取接收recvfrom()UDP数据包的接口的IP(Microsoft)

在Microsoft多宿主PC上绑定到INADDR_ANY的套接字上使用recvfrom()。 当recvfrom()获取UDP数据包时:如何找到接收数据包的接口(IP)?

0
微软PC?这是一个非常广泛的可能性,我假设Windows - 但仍然,什么版本? Win 3.11和Win 7 略微不同。还有,你试过了什么?您期望得到什么结果?你得到了什么?
额外 作者 Piskvor,
- 由于某种原因,我无法编辑原始帖子 - 使用win2000中的recvfrom()(我不能使用WSARecvMsg())到Win7到目前为止我找不到任何要做的事情
额外 作者 user664239,

1 答案

当单个侦听套接字绑定到多个IP时,无法知道接收IP。您可以使用 GetAdaptersInfo()和/或 GetAdapterAddresses()查询机器的本地IP列表,而不是将单个套接字绑定到 INADDR_ANY ,然后为每个IP创建一个单独的侦听套接字。您可以使用 getsockname()来了解给定套接字绑定的IP,但仅限于该套接字绑定到特定IP而不是多个IP。

0
额外