2011-04-18 13 views
6

% 100 işçinin çoraplarını kullanıyorum ve uygulamamla bağlantı kuramıyorum. SOCKS Java'da nasıl kullanılır?

 
     SocketAddress proxyAddr = new InetSocketAddress("1.1.1.1", 12345); 
     Proxy pr = new Proxy(Proxy.Type.SOCKS, proxyAddr);

try 
    { 
     HttpURLConnection con = (HttpURLConnection) new URL(url).openConnection(pr); 
     con.setConnectTimeout(proxyTimeout * 1000); 
     con.setReadTimeout(proxyTimeout * 1000); 
     con.connect(); 

     System.out.println(con.usingProxy()); 
    } 
    catch(IOException ex) 
    { 
     Logger.getLogger(Enter.class.getName()).log(Level.SEVERE, null, ex); 
    } 

Peki ne yapıyorum yanlış? HTTP'yi bazı HTTP proxy'leriyle birlikte kullanacaksam, her şey çalışıyor ancak SOCKS ile çalışmıyor.

cevap

12

Gerçekten çok kolay. Sadece ilgili Sistem Özellikleri'ni ayarlamanız ve normal HttpConnection ile devam etmeniz yeterlidir. Derinlerde

System.getProperties().put("proxySet", "true"); 
System.getProperties().put("socksProxyHost", "127.0.0.1"); 
System.getProperties().put("socksProxyPort", "1234"); 
+0

Bunlar doğru ama çok iş parçacığı kullanmak gerekiyor ve ne zaman zaman birçok Proxy sahip olmanız gerekir ne yapmalı? Örneğin, SOCKS olarak IE'de iyi çalışan çorap proxy'si buldum (ve HTTP ve diğer protokoller olarak wotk değil) ama Java'da kullandığımda bu v4 ve 5 için çalışmıyor! Java'da sarılmaya benziyor. – AnNik

1

http://grepcode.com/file_/repository.grepcode.com/java/root/jdk/openjdk/8u40-b25/sun/net/www/http/HttpClient.java/?v=source

, HttpClient HttpURLConnection kullanılır.

476 numaralı hatta, yalnızca kabul edilebilir proxy'nin bir HTTP proxy'si olduğunu görebilirsiniz. Aksi takdirde doğrudan bağlantı kurar.

Garip bir şekilde, HttpURLConnection kullanarak SOCKS proxy için destek yoktur. Daha da kötüsü, kod desteklenmeyen bir proxy kullanmıyor ve sadece vekili yok sayar!

Bu sınıfın en az 10 yıl sonra SOCKS vekilleri için destek yok neden var olamaz.

2

"socksProxyHost" ve "socksProxyPort" VM argümanlarını bilgilendirin.

örn.

java -DsocksProxyHost=127.0.0.1 -DsocksProxyPort=8080 org.example.Main 
İlgili konular