gpt4 book ai didi

ssl - 尝试使用 Apache TelnetClient 通过端口转发代理建立 TLS 远程登录 session

转载 作者:行者123 更新时间:2023-12-04 22:39:24 25 4
gpt4 key购买 nike

我正在尝试编写一个 Java 程序,它将与启用 TLS 的服务器建立 Telnet session ,该服务器只能通过端口转发代理访问。
在过去,我已经成功地使用 TelnetClient 与非 TLS 服务器和 TLS 服务器建立 telnet session ,但我从来没有使用过代理。
我已经为此苦苦挣扎了一段时间,所以是时候请教专家了。
这是一个简单的代码示例,说明了我遇到的问题。在我向读者发表讲话后,我没有得到任何返回,然后读者阻止:
'''公共(public)类 SimpleTest {

public static PrintStream  psout;


static void write(String value) {
try {
psout.println(value);
psout.flush();
}
catch (Exception e) {
e.printStackTrace();
}
}

public static void main(String[] args) {

TelnetClient telnet;
TelnetReader tr;

String host="192.168.82.72";
int port=992;

try {
// 1. Create the TelnetClient Object
telnet = new TelnetClient();

// 2. Set up our own SocketFactory (For SSL)
SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();
telnet.setSocketFactory(sslsocketfactory);

// 3. Set the proxy
System.setProperty("socksProxyHost","127.0.0.1");
System.setProperty("socksProxyPort","6600");

Proxy socksProxy = new Proxy(Proxy.Type.SOCKS, new InetSocketAddress("127.0.0.1", 6600));
telnet.setProxy(socksProxy);


// 4. Connect
telnet.connect(host, port);
Thread.sleep(1000);

// 5. Start the reader
tr = new TelnetReader(telnet.getInputStream());
Thread reader = new Thread (tr);
reader.start();
Thread.sleep(1000);

// 6. Address the output stream
String r;
psout = new PrintStream(telnet.getOutputStream());
Thread.sleep(1000);
r = tr.get(); // <- r is null!!

} catch (Exception e) {
e.printStackTrace();
}
}
}
'''
我究竟做错了什么?
蒂亚约翰

最佳答案

这就是我解决问题的方法。我发现 setProxy 方法(在 Apache 代码中)重置了 SocketFactory。我下载了 Apache 代码并注释掉了那一行。当我这样做时,我的代码工作得很好。

关于ssl - 尝试使用 Apache TelnetClient 通过端口转发代理建立 TLS 远程登录 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63821027/

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