2013-08-16 43 views
1

我在服務器上安裝了多個NIC(網絡接口)。我可以爲JAVA中的現有客戶端套接字設置默認本地綁定地址嗎?在java中爲客戶端套接字設置本地綁定地址

有可能通過該方法來做到這一點編程:

new Socket(InetAddress address, int port, InetAddress localAddr, int localPort) 

問題是,我沒有訪問的SocketFactory所以我不能指定localAddr值。

+0

爲什麼?當您連接套接字時,TCP會將其排序。你不必自己做IP路由。 – EJP

+0

您顯示了用於設置本地地址的'Socket'構造函數,並且他們說您不能訪問'SocketFactory'。 'SocketFactory'似乎不是該方法所必需的,那麼你的問題在哪裏? – Robadob

+0

@ user2689005我看到你正在使用一個庫。當任何庫向您返回一個連接的套接字或其他東西時,綁定它已經太遲了,因爲它已經綁定了。我再問一次。你在這裏試圖解決的實際問題是什麼? – EJP

回答

1

你在問題中提到的摘要SocketFactory.createSocket()方法的文檔指向這個構造函數,它提供了你需要的東西;

public Socket.Socket(InetAddress address, 
    int port, 
    InetAddress localAddr, 
    int localPort) 
     throws IOException 

Docs found here


如果你需要改變你應該使用bind(SocketAddress bindpoint)方法的現有插座爲localAddress,但是這將引發IOException如果已經綁定了套接字。

您應該將InetSocketAddress傳遞給該方法,因爲SocketAddress是抽象的。


如果您無法找到您的每一個接口的內部IP地址this指南介紹瞭如何檢索他們的集合。

相關問題