4

アプリケーションにSOCKSサポートを追加するにはどうすればよいですか?どこでライブラリを入手できますか?

4

2 に答える 2

6

http://java.sun.com/javase/6/docs/technotes/guides/net/proxies.htmlから

RFC 1928で定義されているSOCKSプロトコルは、クライアントサーバーアプリケーションがTCPレベルとUDPレベルの両方でファイアウォールを安全に通過するためのフレームワークを提供します。その意味で、それはより高いレベルのプロキシ(HTTPまたはFTP固有のプロキシなど)よりもはるかに一般的です。J2SE 5.0は、クライアントTCPソケットのSOCKSサポートを提供します。

SOCKSに関連する2つのシステムプロパティがあります。

socksProxyHost
socksProxyPortポート番号 のSOCKSプロキシサーバーのホスト名。デフォルト値は1080です。

今回はプレフィックスの後にドット('。')がないことに注意してください。これは歴史的な理由と下位互換性を確保するためです。この方法でSOCKSプロキシを指定すると、すべてのTCP接続がプロキシを介して試行されます。

例:

$ java -DsocksProxyHost=socks.mydomain.com GetURL

ここでは、コードの実行中に、すべての発信TCPソケットがsocks.mydomain.com:1080のSOCKSプロキシサーバーを通過します。

では、SOCKSプロキシとHTTPプロキシの両方が定義されているとどうなりますか?規則として、HTTPやFTPなどの高レベルのプロトコルの設定は、SOCKSの設定よりも優先されます。したがって、その特定のケースでは、HTTP接続を確立するときに、SOCKSプロキシ設定は無視され、HTTPプロキシに接続されます。例を見てみましょう:

$ java -Dhttp.proxyHost=webcache.mydomain.com -Dhttp.proxyPort=8080 -DsocksProxyHost=socks.mydomain.com GetURL

ここでは、http設定が優先されるため、httpURLはwebcache.mydomain.com:8080を経由します。しかし、ftp URLはどうですか?FTPには特定のプロキシ設定が割り当てられておらず、FTPはTCPの上にあるため、FTP接続はsocks.mydomsain.com:1080のSOCKSプロキシサーバーを介して試行されます。FTPプロキシが指定されていた場合は、代わりにそのプロキシが使用されます。

于 2010-05-14T14:09:40.753 に答える
2

jkd 1.5以降、プログラムでSocketによってプロキシを構成することもできます。

例えば ​​:

SocketAddress sa = InetSocketAddress.createUnresolved("mysocksproxy.com", 1080);

Proxy proxy = new Proxy(Proxy.Type.SOCKS, sa);

Socket s = new Socket(proxy);

このコードをSocketFactoryに配置することもできます。

于 2011-11-29T20:31:29.567 に答える