2012-02-27 94 views
5

我想使用Java類HttpURLConnection連接到(本地網絡)上的特定設備。我需要使用特定的網絡適配器,因爲將運行我的程序的計算機安裝了2個網絡適配器。一個適配器位於更寬的公司網絡中,並且動態地分配了一個IP,而另一個適配器位於該機器的本地網絡並且具有靜態IP。這是我想限制我的程序的第二個本地網絡。HttpURLConnection&使用特定網絡適配器

使用HttpURLConnection很方便,因爲它使我不必解析服務器響應等,直接獲取我需要的數據,而不需要執行諸如this之類的操作。但是,因爲我需要限制我的HTTP請求到特定的網絡適配器,我不能100%確定我的HTTP請求只能通過所需的適配器發送。我是否正確理解HttpURLConnection的工作方式,即它依賴於操作系統選擇適當的網絡適配器來使用?

+2

http://stackoverflow.com/questions/1008781/is-it-possible-to-specify-which-network-interface-for-a-jvm-or-ide-to-use – 2012-02-27 18:48:49

回答

7

使用普通Java,您只能將Socket綁定到選定的NetworkInterface

如果您需要HTTP協議支持以控制要從哪個網絡接口進行連接,則需要使用Apache HTTP Client

您需要提供一個ConnRoutePNames.LOCAL_ADDRESS參數,參見詳細信息:http://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html

UPDATE:

由於4.3 ConnRoutePNames已過時,請使用RequestConfig及其RequestConfig.Builder代替。

+0

非常有幫助,謝謝QWE! – Kerry 2012-02-27 19:18:31

+0

謝謝!不再Qwe了:) – 2014-02-26 04:20:40

相關問題