我想使用 Java 类 HttpURLConnection连接到(本地网络)上的特定设备。我需要使用特定的网络适配器,因为将运行我的程序的机器安装了 2 个网络适配器。一个适配器位于更广泛的公司网络上,并动态分配了一个 IP,而第二个适配器是机器本地网络并具有静态 IP。这是我要将我的程序限制到的第二个本地网络。
使用 HttpURLConnection 很方便,因为它使我不必解析服务器响应等并直接获取我需要的数据,而不是像 this 这样的操作.但是,因为我需要将我的 HTTP 请求限制到特定的网络适配器,所以我不能 100% 确定我的 HTTP 请求仅通过所需的适配器发送。我对 HttpURLConnection 工作原理的理解是否正确,即它依赖于操作系统来选择要使用的适当网络适配器?
最佳答案
使用纯 Java,您只能绑定(bind) Socket到选定的 NetworkInterface .
如果您需要 HTTP 协议(protocol)支持并能够控制从哪个网络接口(interface)进行连接,您需要使用 Apache HTTP Client .
您需要为其提供一个ConnRoutePNames.LOCAL_ADDRESS
参数,详情请见此处:http://hc.apache.org/httpcomponents-client-ga/tutorial/html/connmgmt.html .
更新:
由于 4.3 ConnRoutePNames 已弃用,请使用 RequestConfig及其 RequestConfig.Builder相反。
关于java - HttpURLConnection 和使用特定的网络适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9470328/