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

发布于 2024-12-12 12:06:20 字数 100 浏览 5 评论 0原文

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

Using recvfrom() on a socket bound to INADDR_ANY on a Microsoft multihomed PC.
when recvfrom() gets an UDP packet: how can I find the Interface (IP) that received the packet?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我还不会笑 2024-12-19 12:06:21

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

There is no way to know the receiving IP when a single listening socket is bound to multiple IPs. Instead of binding a single socket to INADDR_ANY, you can query the machine's list of local IPs using GetAdaptersInfo() and/or GetAdapterAddresses(), then create a separate listening socket for each IP. You can use getsockname() to know which IP a given socket is bound to, but only when that socket is bound to a specific IP, not multiple IPs.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文