【问题标题】:Getting the IP of the interface that received a recvfrom() UDP packet (Microsoft)获取接收 recvfrom() UDP 数据包的接口的 IP (Microsoft)
【发布时间】:2011-10-27 13:37:51
【问题描述】:

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

【问题讨论】:

  • 微软电脑?这是一个相当广泛的可能性,我假设 Windows - 但是,什么版本? Win 3.11 和 Win 7 略有不同。另外,你试过什么?你期待什么结果?你得到了什么?
  • --由于某种原因我无法编辑原始帖子--使用从 win2000 的 recvfrom()(我不能使用 WSARecvMsg())到 Win7 到目前为止我找不到任何可以做的事情跨度>

标签: winsock multihomed


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 2020-05-03
    • 2011-03-19
    • 2011-07-13
    • 2011-08-23
    • 1970-01-01
    • 2010-12-09
    相关资源
    最近更新 更多