我想使用代理服务器与 Apache 的 commons-net 建立 FTP 连接。
但是看着这个Does FTPClient support FTP connections through an FTP proxy server?让我担心。
我不得不干预系统属性,Sun 文档指出“如果指定了 socksProxyHost,则所有 TCP 套接字将使用 SOCKS 代理服务器建立连接或接受连接。”
什么?所有 TCP 套接字?我的数据库连接呢?或者我可能想在不使用代理的情况下同时打开其他 FTP 连接?他们都会受到影响吗?
有没有其他方法可以做到这一点而不影响我的应用程序的其余部分?
最佳答案
在 Java 中有多种使用代理的方法,尤其是从 1.5 版开始。
- 使用系统属性:快速而强大但灵 active 有限
- 您可以对所有 TCP 连接使用 SOCKS 代理。
- 您还可以为每个协议(protocol)设置代理,适用于 HTTP、FTP 和 HTTPS
- 对于这两种方法,您都可以指定一个不会使用代理 的主机列表
- 使用
java.net.Proxy
类 (Java 1.5+) 为每个Connection
设置(或不设置) - 实现
java.net.ProxySelector
(idem) 这将根据您的标准为每个Connection
确定一个Proxy
Proxy
关于java - 将 FTP 代理与 apache commons-net 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1104134/