首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java中的socks (通过socks打开)

java中的socks (通过socks打开)
EN

Stack Overflow用户
提问于 2010-05-14 22:05:00
回答 2查看 3.7K关注 0票数 4

如何向我的应用程序添加SOCKS支持?我在哪里可以得到libs?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-14 22:09:41

来自http://java.sun.com/javase/6/docs/technotes/guides/net/proxies.html

RFC 1928中定义的SOCKS协议为客户端服务器应用程序提供了一个框架,以便安全地穿越TCP和UDP级别的防火墙。从这个意义上说,它比更高级的代理(如HTTP或FTP特定的代理)要通用得多。TCP5.0为客户端J2SE套接字提供SOCKS支持。

有两个与SOCKS相关的系统属性:

SOCKS代理服务器主机名的socksProxyHost

端口号的socksProxyPort,默认值为1080

注意,这里没有点('.')这一次在前缀之后。这是出于历史原因,并确保向后兼容。以这种方式指定SOCKS代理后,将尝试通过该代理进行所有TCP连接。

示例:

代码语言:javascript
复制
$ java -DsocksProxyHost=socks.mydomain.com GetURL

在这里,在代码执行期间,每个传出的TCP套接字都将通过socks.mydomain.com:1080的SOCKS代理服务器。

现在,如果同时定义了SOCKS代理和HTTP代理,会发生什么呢?规则是,更高级别协议的设置优先于SOCKS设置。因此,在该特定情况下,当建立HTTP连接时,SOCKS代理设置将被忽略,并且将联系HTTP代理。让我们看一个例子:

代码语言:javascript
复制
$ java -Dhttp.proxyHost=webcache.mydomain.com -Dhttp.proxyPort=8080 -DsocksProxyHost=socks.mydomain.com GetURL

在这里,http URL将通过webcache.mydomain.com:8080,因为http设置优先。但是ftp URL呢?由于没有为FTP指定特定的代理设置,而且FTP位于TCP之上,因此将尝试通过位于socks.mydomsain.com:1080的SOCKS代理服务器进行FTP连接。如果指定了FTP代理,则将使用该代理。

票数 6
EN

Stack Overflow用户

发布于 2011-11-30 04:31:30

从jkd 1.5开始,您还可以通过Socket以编程方式配置代理:

例如:

代码语言:javascript
复制
SocketAddress sa = InetSocketAddress.createUnresolved("mysocksproxy.com", 1080);

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

Socket s = new Socket(proxy);

您可能还希望将此代码放入SocketFactory中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2834708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档