除了更改路由表之外,Windows中是否有可靠的方法來強制新創建的套接字使用特定的網絡接口?我知道bind()
到接口的IP地址並不能保證這一點。在Windows中爲套接字使用特定的網絡接口
回答
(好第二次幸運..)
FYI這裏有一個問題perform connect() on specific network adapter沿着相同的路線...
的Windows XP和Windows Server 2003 使用弱主機模式發送和接收所有IPv4接口和 強主機模式發送和 接收所有IPv6接口。您 不能配置此行爲。在 Windows Vista中的 下一代TCP/IP堆棧和Windows Server 2008 支持強主機發送和 通過 默認接收IPv4和IPv6的所有接口上除了 Teredo隧道接口的 的Teredo主機的中繼。
因此,要在Windows XP和Windows Server 2003 IP4中回答您的問題(正確,這次)否,但對於IP6是的。對於Windows Vista和Windows 2008是的(除了某些情況)。
而且從http://www.codeguru.com/forum/showthread.php?t=487139
在Windows上,調用bind()時會影響 卡選擇僅傳入流量, 沒有傳出通信。因此, 客戶端在多宿主系統中運行 (即,多於一個接口卡)上, 那就是選擇 使用該卡的網絡棧,和它使得其僅基於 目的地IP基於 選擇,其依次基於路由表上的 。呼叫bind() 不會以任何方式影響卡 的選擇。
這與 有些關係,稱爲「弱端系統」 (「弱E/S」)模型。 Vista更改爲 強大的E/S型號,因此在Vista下可能不會出現問題 。但之前的所有版本的Windows都使用弱E/S 模式。
與弱E/S模式,它是決定哪些卡 是在 多宿主系統用於傳出流量 路由表。
看看這些線程提供了一些 見解:
「在Windows XP多宿主 主機上的本地套接字綁定不起作用」在 http://www.codeguru.com/forum/showthread.php?t=452337
「如何將一個端口連接到指定的 Networkcard ?」在 http://www.codeguru.com/forum/showthread.php?t=451117。 此線程提到 CreateIpForwardEntry()函數,它 (我認爲)可以使用,以便與指定 服務器的所有 傳出IP流量是通過指定 適配器路由創建路由表的 項。
希望幫助 「在多宿主 系統奇怪的行爲,結合」 「有2個以太網卡工作」 在 http://www.codeguru.com/forum/showthread.php?t=448863
!
- 1. 在C#中使用套接字的活動網絡接口
- 2. 未在特定網絡接口上接收的Java組播套接字
- 3. 在python中的原始套接字的網絡接口?
- 4. 如何創建一個指向特定網絡接口的傳出套接字?
- 5. 使用SSL爲Windows套接字連接保護Windows端口
- 6. 網絡:當接口升/降時綁定所有接口上的套接字
- 7. OpenShift中的網絡套接字連接
- 8. 將套接字綁定到網絡接口
- 9. HTTP網絡套接字與ActiveMQ網絡套接字
- 10. 如何爲NSURLSession連接選擇特定的網絡接口?
- 11. Windows網絡接口監控
- 12. Java:開始使用套接字和網絡套接字
- 13. 作爲Windows服務的Tomcat8 - 在網絡套接字上偵聽
- 14. 網絡上的套接字
- 15. 如何使用網絡套接字
- 16. SignalR不使用網絡套接字
- 17. TrafficStats特定應用程序特定的網絡接口
- 18. 網絡編程中的單套接字與雙套接字
- 19. 如何將套接字綁定到vxWorks中的特定接口
- 20. SignalR與網絡套接字
- 21. 網絡套接字問題
- 22. 網絡套接字命令
- 23. MQTT PUBACK網絡套接字
- 24. 基於網絡套接字
- 25. 與MySQL網絡套接字
- 26. 設置網絡套接字
- 27. HTML 5網絡套接字
- 28. 關於網絡套接字
- 29. 網絡套接字消息
謝謝, 除非我錯過了一些東西,否則答案都不相關,因爲SO_BINDTODEVICE與Windows無關。 雖然我沒有證據,但我懷疑你的總結是正確的。 – Ofir 2010-01-18 11:56:56
哎呀,你是!以更好的信息更新了我的答案 - 對不起! – Ezz 2010-01-18 16:18:22
請注意,弱主機和強主機模型不會影響從套接字發送的流量的路由。即強大的主機模型可確保離開網絡適配器的流量使用該適配器分配的IP地址,但不會影響主機本身的網絡堆棧如何選擇要實際使用的出站適配器。這實際上在上面的「The Cable Guy」鏈接以及維基百科上進行了解釋:https://en.wikipedia.org/wiki/Host_model – 2016-02-09 08:22:32