JavaSocksV4代理

JavaSocksV4代理,java,proxy,socks,Java,Proxy,Socks,你能帮我吗,我遇到了这里描述的同样的问题: Java在Socks 5代理上运行良好,但在Socks 4代理上运行良好: java.net.SocketException: Malformed reply from SOCKS server 消息来源如下: URL obj=新URL(URL) 我检查了很多v4代理,它们不工作。 也无助于添加道具: System.setProperty("socksProxyVersion", "4"); 关于这个问题有什么想法吗 感谢您的帮助。对于JDK 7,

你能帮我吗,我遇到了这里描述的同样的问题:

Java在Socks 5代理上运行良好,但在Socks 4代理上运行良好:

java.net.SocketException: Malformed reply from SOCKS server
消息来源如下: URL obj=新URL(URL)

我检查了很多v4代理,它们不工作。 也无助于添加道具:

System.setProperty("socksProxyVersion", "4");
关于这个问题有什么想法吗


感谢您的帮助。

对于JDK 7,他们确实添加了
socksProxyVersion
属性,但您无法为单个连接设置该属性


建议的,
socksproxy版本
,属性对通过
java.net.Proxy

编程设置的SOCKS代理没有任何影响。我使用了这个属性,它工作得非常好:

Socket s;
try {
    s = new Socket(new Proxy(Proxy.Type.SOCKS, proxy));
    s.setSoTimeout(5000);
    s.connect(google);
    s.close();
} catch(Throwable t) {
    s = new Socket(new Proxy(Proxy.Type.SOCKS, proxy));
    Method m = s.getClass().getDeclaredMethod("getImpl");
    m.setAccessible(true);
    Object sd = m.invoke(s);
    m = sd.getClass().getDeclaredMethod("setV4");
    m.setAccessible(true);
    m.invoke(sd);
    s.setSoTimeout(5000);
    s.connect(google);
    s.close();
}

没有类似于
socksProxyVersion的属性。
请参阅。
Socket s;
try {
    s = new Socket(new Proxy(Proxy.Type.SOCKS, proxy));
    s.setSoTimeout(5000);
    s.connect(google);
    s.close();
} catch(Throwable t) {
    s = new Socket(new Proxy(Proxy.Type.SOCKS, proxy));
    Method m = s.getClass().getDeclaredMethod("getImpl");
    m.setAccessible(true);
    Object sd = m.invoke(s);
    m = sd.getClass().getDeclaredMethod("setV4");
    m.setAccessible(true);
    m.invoke(sd);
    s.setSoTimeout(5000);
    s.connect(google);
    s.close();
}