gpt4 book ai didi

java - 替换 Java 中的套接字底层 URL 连接

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:53:09 25 4
gpt4 key购买 nike

我有一个 Java 应用程序,它使用 java.net.URL 打开一个位置来检索一些数据。我现在需要通过 VPN 打开连接。它运行的 Linux 机器现在可以随时打开多个隧道,我需要能够以编程方式告诉应用程序使用哪个隧道。

我相信使用 java.net.Socket 可以选择虚拟设备打开连接,但我找不到任何方法来覆盖 URL 对象来处理所有 HTTP 流量- 或者在实际打开连接之前替换底层套接字。

那么,如何将我的应用程序连接到特定的网络接口(interface)并保持使用像 java.net.URL 这样的高级对象的优势?

现在,我不确定这是否可能,但我想我会问问聪明的 stackoverflow 社区......

最佳答案

我相信您可以使用 java.net.URL 注册自定义 URLStreamHandlerFactory。每当在 URL 上调用 openConnection() 时,它都会由这个已注册的自定义工厂处理,让您可以控制套接字连接的细节。

一旦您能够操作套接字创建,指定您使用的网络接口(interface)就相当简单了:

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

看起来有一些库可以提供简单的访问来设置 HTTP 连接使用的 socketFactory。参见示例 http://faban.org/1.1/docs/api/index.html?com/sun/faban/driver/transport/sunhttp/HttpURLConnection.html

关于java - 替换 Java 中的套接字底层 URL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15576029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com