2012-06-12 25 views
3

我想在我的Java代碼中使用WiFi連接。如何使用特定的WiFi網絡接口從Internet上下載文件?如何在Java中指定網絡接口

換句話說,我該如何強迫java通過特定的網絡接口發送數據包?

+0

通常情況下,你就不會在乎哪一個來自 - 你只是想要的文件! _WHY_是否需要通過特定的連接類型? –

+1

@ X-Zero:例如一個WiFi連接,該連接具有通往按次付費互聯網連接的路線,以及帶有按次付費互聯網連接的LAN連接。如果速度允許,您更願意在按次付費的連接上處理您的下載。我的兩分錢。 –

+0

@Luca - +1 - 是的,這將是一個有效的用例,儘管如果類似的情況可能會在原始問題中指定。真的,我只是想確保OP不會給自己一個他可能沒有的問題。 –

回答

9

您可以查詢使用NetworkInterface類可用的網絡接口。然後使用bind()方法將此接口綁定到套接字。

NetworkInterface ni = NetworkInterface.getByName("eth0"); 
Socket socket = new Socket(); 
socket.bind(ni.getInetAddresses().nextElement()); 

這是在Java教程所有規定:http://docs.oracle.com/javase/tutorial/networking/nifs/definition.html

+0

當我嘗試在java中發送UDP數據包時,它顯示錯誤。在線程「主要」 java.net.BindException 例外:無法分配請求的地址:發送數據報在java.net.DualStackPlainDatagramSocketImpl.socketSend(本機方法) \t在java.net.DualStackPlainDatagramSocketImpl.send(來源不明) \t失敗\t在java.net.DatagramSocket.send(未知源) –