在 Windows 中使用套接字的特定网络接口
除了更改路由表之外,Windows 中是否有可靠的方法来强制新创建的套接字使用特定的网络接口?据我了解,bind()
到接口的 IP 地址并不能保证这一点。
Is there a reliable way in Windows, apart from changing the routing table, to force a newly created socket to use a specific network interface? I understand that bind()
to the interface's IP address does not guarantee this.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
(好吧,第二次幸运..)
仅供参考,这里还有另一个问题 在特定网络上执行 connect()适配器沿着同样的路线...
根据电缆盖伊
因此,回答您的问题(正确地,这次)在 Windows XP 和 Windows Server 2003 IP4 中否,但对于 IP6 是。对于 Windows Vista 和 Windows 2008 是的(某些情况除外)。
也来自 https://forums.codeguru.com/ showthread.php?487139-套接字绑定与路由表
希望有帮助!
(Ok second time lucky..)
FYI there's another question here perform connect() on specific network adapter along the same lines...
According to The Cable Guy
So to answer your question (properly, this time) in Windows XP and Windows Server 2003 IP4 no, but for IP6 yes. And for Windows Vista and Windows 2008 yes (except for certain circumstances).
Also from https://forums.codeguru.com/showthread.php?487139-Socket-binding-with-routing-table
Hope that helps!
我不知道你为什么说绑定工作不可靠。当然,我没有进行详尽的测试,但以下解决方案对我有用(Win10、Visual Studio 2019)。我需要通过特定的 NIC 发送广播消息,其中计算机上可能存在多个 NIC。在下面的代码片段中,我希望广播消息在 IP 为 .202.106 的 NIC 上发出。
总之:
`
`
...<剪断>
...
I'm not sure why you say bind is not working reliably. Granted I have not done exhaustive testing, but the following solution worked for me (Win10, Visual Studio 2019). I needed to send a broadcast message via a particular NIC, where multiple NICs might be present on a computer. In the snippet below, I want the broadcast message to go out on the NIC with IP of .202.106.
In summary:
`
`
... < snip >
...