0
基本信息:
我试图让一个Java应用程序通过SOCKS代理连接到一个目标。我发现this了解如何配置代理设置,这很重要,因为我无法更改源代码来配置代理使用情况。但是,应用程序没有通过代理连接。JVM和SocksProxy设置在Ubuntu 16.04上不起作用
详细
我用一个小的自定义类测试这一点,这只能有一个主要方法,并做到这一点:
public static void main(String... strings) throws URISyntaxException, IOException {
URL url = new URI("http", null, "localhost", 9998, null, null, null).toURL();
System.out.println("opening connection to " + url.toString());
URLConnection c = url.openConnection();
System.out.println("connecting");
c.connect();
System.out.println(c.getContentLength());
System.out.println(c.getContentType());
}
然后,我开始使用java <properties> <classname>
该类。 属性我已经试过到目前为止(单一及复合):
socksPropertyHost=localhost
socksPropertyPort=9999
http.proxySet=true
http.proxyHost=localhost
http.proxyPort=9999
https.proxySet=true
https.proxyHost=localhost
https.proxyPort=9999
proxySet=true
proxyHost=localhost
proxyPort=9999
java.net.useSystemProxies=true
同样,我添加了这些命令行,然后添加到我的环境中,在jre/lib/net.properties
设置的值和噘嘴他们转换成逗号分隔的列表,然后在bash脚本中以-D$JAVA_OPTS
的形式传递。
所有的连接用
Exception in thread "main" java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)
at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
at sun.net.www.http.HttpClient.New(HttpClient.java:339)
at sun.net.www.http.HttpClient.New(HttpClient.java:357)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1202)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1138)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1032)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:966)
at sandbox.Sandbox.main(Example.java:16)
基本上拒绝了,这个问题(S)这里是/是这个/这些:
难道我做错了什么吗?这是一个错误?它只是我的系统吗? 任何答案将不胜感激。
-D不带逗号分隔的列表。您需要为每个要设置的属性设置一个-D。 –
好的,澄清一下:我在命令行中添加了每一个变量(通过'-Done,-Dtwo,-Dthree'),我将它们添加到'application.properties'中,将它们添加到环境中,set 'net.properties'中的每个值,并且在绝望中尝试了一个bash脚本,它将它们组合成一个单独的字符串。 –
您的场景无法从您的问题中轻松复制,并且我不认为所有连接都被完全相同的堆栈跟踪拒绝。他们实际上是 –