gpt4 book ai didi

java - 使用 SSLSocket 的 SOCKS5 代理

转载 作者:搜寻专家 更新时间:2023-11-01 01:47:22 25 4
gpt4 key购买 nike

我有一个客户端/服务器应用程序,它通过 Java 的 SSLSocket 远程连接到服务器。

我正在尝试实现一种可选模式,通过经过身份验证的 SOCKS v5 代理启用连接。

我尝试使用 relevant tutorial但它没有具体提及有关 SSL 的任何内容。

我已经尝试设置系统范围的属性(“socksProxyHost”和“socksProxyPort”),但它似乎没有做任何事情。

我的下一个方法是在 SSLSocketFactory 中使用工厂方法:

            String proxyHost = Config.prefs.get("PROXY_NAME", "localhost");
int proxyPort = Config.prefs.getInt("PROXY_PORT", 1080);
InetSocketAddress proxyAddr = new InetSocketAddress(proxyHost, proxyPort);
Socket underlying = new SSLSocket(new Proxy(Proxy.Type.SOCKS, proxyAddr));
underlying.connect(new InetSocketAddress(getHost(), getPort()));
socket = (SSLSocket) factory.createSocket(
underlying,
getHost(),
getPort(),
true);

但这种方法的问题是 createSocket 方法要求底层套接字已经连接,而我的服务器不会接受非 SSL 连接。

使用 SOCKS 连接到我的远程服务器的最佳方式是什么?此外,我几乎不知道如何在此系统中为经过身份验证的 SOCKS 提供用户名/密码。

谢谢!

最佳答案

        String proxyHost = Config.prefs.get("PROXY_NAME", "localhost");
int proxyPort = Config.prefs.getInt("PROXY_PORT", 1080);
InetSocketAddress proxyAddr = new InetSocketAddress(proxyHost, proxyPort);
Socket underlying = new Socket(new Proxy(Proxy.Type.SOCKS, proxyAddr));
underlying.connect(new InetSocketAddress(getHost(), getPort()));
socket = (SSLSocket) factory.createSocket(
underlying,
proxyHost,
proxyPort,
true);

关于java - 使用 SSLSocket 的 SOCKS5 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5783832/

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