gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 01:48:07 26 4
gpt4 key购买 nike

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

最佳答案

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

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

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

socksProxyHost 为 SOCKS 代理服务器的主机名
socksProxyPort为端口号,默认为1080

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

示例:

$ java -DsocksProxyHost=socks.mydomain.com GetURL

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

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

$ 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 代理,则将使用该代理。

关于java - java中的 socks (通过 socks 打开),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2834708/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com