Java Socks代理套接字错误

时间:2012-09-29 15:15:22

标签: java sockets proxy socks

我正在尝试通过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上尝试过代理,它运行得很完美。所以...问题出在我的应用程序中。

任何人都可以帮助我吗? 谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

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