輸出接口有相當多幾個相關的問題(如Java Socket specify a certain network interface for outgoing connections),但是我找不到我的問題一個令人滿意的,即實際的解決方案:Java的插座和多個Linux上
在我的目標(的Linux)平臺有多個網絡接口(eth0 ... ethN),從中可以訪問服務器S.默認路由通常是通過eth0,但是我試圖通過例如連接S來連接。 ETH4使用
new java.net.Socket(IP_of_S, targetport, IP_of_eth4, srcport)
或
sock.bind(eth4_SocketAddress);
sock.connect(S_SocketAddress);
在ETH4的IP已被正確分配,但交通仍然會走出低谷的缺省路由的接口這個例子情況。我瞭解到這是由於「弱端系統模型」RFC 1122所致。但是,我想知道是否仍然有一個基於Java的解決方案來實現我的原始目標,或者是否必須觸發外部iptables或路由來自我的電話程序。
(BTW:輸出接口需要在運行時動態選擇,即我的程序關閉了連接,並嘗試使用不同的輸出接口非常頻繁地重新連接。)