我正在尝试通过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上尝试过代理,它运行得很完美。所以...问题出在我的应用程序中。
任何人都可以帮助我吗? 谢谢!
答案 0 :(得分:0)
你不认为你连接的服务器只支持Socks v5协议吗?
您的连接请求一切正常。如果为v4启用了服务器,则代码应该正常工作。我绝对成功地使用非常类似的实现。
此外,您应该看看这个Socket()构造函数 - 它可能足以满足您的需求。它存在于JRE 1.6和JRE 1.7
中