1

我正在尝试通过 Java 中的 SOCKS (v4 / v5) 代理创建 http 请求。在 WikiPedia 上阅读 socks 通信协议后,我将这段代码放在一起:

Socket sock = new Socket();
InetSocketAddress remoteProxyAddress = new InetSocketAddress(proxy ip, proxy port);
sock.connect(remoteProxyAddress, connTimeout);

InputStream in = sock.getInputStream();
OutputStream out = sock.getOutputStream();

out.write(0x04);
out.write(0x01);
out.write((endpoint.getPort() >> 8) & 0xff);
out.write((endpoint.getPort() >> 0) & 0xff);
out.write(endpoint.getAddress().getAddress());
out.write(0x0);
out.flush();

这是我从代理服务器读取的部分。问题是响应总是“-1”。

我已经在 Firefox 上尝试过代理,它运行良好。所以...问题出在我的应用程序中。

谁能帮我?谢谢!

4

1 回答 1

0

你不觉得你连接的服务器只支持 Socks v5 协议吗?

您的连接请求一切正常。如果服务器启用了 v4,您的代码应该可以正常工作。我使用非常相似的实现绝对成功。

您还应该看看这个Socket()构造函数 - 它可能足以满足您的需要。它存在于 JRE 1.6 和 JRE 1.7 中

于 2012-09-29T15:36:56.027 回答