Java Socks代理套接字错误

Java Socks代理套接字错误,java,sockets,proxy,socks,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 = so

我试图通过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上试用过这个代理,效果非常好。所以问题出在我的应用程序中

有人能帮我吗?
谢谢

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

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


您还应该看看这个构造函数——它可能足以满足您的需要。它同时存在于JRE 1.6和JRE 1.7中,这真的很奇怪。您是否尝试过Sun的impmementation?能否在代码开头检查endpoint.getPort()和endpoint.getAddress().getAddress()的实际值?还有一件事。endpoint.getAddress().getAddress()是否返回ipv4地址?我已使用数据包嗅探器检查了输出。在实际http请求之前发送的所有数据都是相同的(我的意思是在我的应用程序和Firefox之间)。@IonutUngureanu服务器的响应如何?为什么?Java已经支持SOCKS代理。你不必自己写。请参阅Javadoc/功能指南/网络。是的。。。它已经支持SOCKS,但它在整个VM上。我需要在不同的代理服务器上同时建立多个连接。