java - 如何在 Java 中使用 SOCKS4 而不是 SOCKS5?
问题描述
我正在创建一个使用 SOCKS 代理连接到 TCP 服务器的应用程序。
SocketAddress sa = InetSocketAddress.createUnresolved(proxyHost, proxyPort);
Proxy proxy = new Proxy(Proxy.Type.SOCKS, sa);
try (Socket socket = new Socket(proxy)) {
SocketAddress sockaddr = new InetSocketAddress(hostname, port);
socket.connect(sockaddr);
OutputStream os = socket.getOutputStream();
os.write(/*write some stuff*/);
// some more stuff...
} catch (UnknownHostException ex) {
System.out.println("Server not found: " + ex.getMessage());
} catch (IOException ex) {
System.out.println("I/O error: " + ex.getMessage());
}
Proxy.Type.SOCKS
应该支持 SOCKS4 和 SOCKS5 代理。当我尝试使用 SOCKS4 代理时,我收到一条错误消息:malformed reply from socks server
. 当我使用 SOCKS5 代理时,一切正常。如何更改我的代码以支持 SOCKS4?我正在使用 Java 16。
解决方案
推荐阅读
- python - 如何从 pysnmp 访问 SNMP 陷阱变量,以便将它们用于 API 发布?
- django - 'QuerySet' 对象没有属性'name' Django
- python - 从 Django ORM 中高效提取大量数据
- java - 存储多个点(浮点数,浮点数)的最佳方法是什么?
- javascript - reactjs - 如何在没有提交按钮的情况下上传文件
- javascript - 执行路由更改功能(使用 HookRouter )
- python - 我的 python 代码没有返回值。请查看代码
- amazon-web-services - Terraform 路由表与 VPC 端点的关联
- c++ - 如何强制使用库的应用程序在 Windows 上包含特定的应用程序清单设置
- flutter - 错误:'Iterable 类型的值
' 不能从返回类型为 'List 的函数返回 ?'。显示此错误