【问题标题】:java.net.SocketException: Malformed reply from SOCKS serverjava.net.SocketException:来自 SOCKS 服务器的格式错误的回复
【发布时间】:2013-12-06 20:03:57
【问题描述】:

我尝试使用套接字创建 SSLSocket,但出现此异常

 SocketAddress proxyAddr = new InetSocketAddress(proxyHost, proxyPort);
Socket underlying = new Socket(new Proxy(Proxy.Type.SOCKS, proxyAddr));
underlying.connect(new InetSocketAddress(host, port));
SSLSocket socket = (SSLSocket) factory.createSocket(underlying,proxyHost,proxyPort,true);

例外: java.net.SocketException:来自 SOCKS 服务器的格式错误的回复

感谢您的帮助

【问题讨论】:

  • 请确保您指向正确的代理地址。一个非常常见的错误是您提供的是普通端口,而您必须提供代理服务器的 https 端口
  • @FreakyThommi HTTPS 与这个问题无关。

标签: java sockets proxy socks


【解决方案1】:

您已将应用程序配置为使用 SOCKS 代理,但您指定为 proxyAddr 的主机:端口上的实体不是 SOCKS 服务器。

【讨论】:

  • 正如你所说的问题是我不应该使用 proxyHost/proxyPort 来创建 SSLSocket,但我如何使用 SOCKS 服务器来创建 SSLSocket。谢谢
  • @Michaelwu 这根本不是我说的。 proxyHost/proxyPort 用于 HTTP 代理,而不是 SOCKS 代理。您没有 SOCKS 服务器,或者至少没有您指定的IP:port。要么你根本不应该使用Proxy.Type.SOCKS,要么你应该指定正确的代理地址。
【解决方案2】:

解决这个问题:

1) 在 Internet Explorer 中打开工具 -> Internet 选项(或者在 Windows 7 中打开控制面板网络设置)

2) 打开连接选项卡

3) 点击局域网设置

4) 如果启用了“使用代理服务器”,请点击高级并禁用“对所有协议使用相同的代理服务器”

【讨论】:

  • 这只是控制 Internet Explorer 的功能。它与Java无关。 OP 的代码是 explicity 使用 SOCKS 代理,或尝试使用。不依赖任何控制面板设置。
  • 我用这个解决了我的问题,来自 SOCKS 服务器的格式错误的回复,如果局域网设置在系统上使用 socks 代理,Java 不订阅:/
猜你喜欢
  • 2013-01-18
  • 1970-01-01
  • 1970-01-01
  • 2014-09-06
  • 2020-09-05
  • 2018-01-07
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多