使用FTP代理与apache commons-net

Str*_*kop 7 java ftp apache-commons-net

我想使用Apache的commons-net使用代理服务器建立FTP连接.

但是看看这个FTPClient是否支持通过FTP代理服务器的FTP连接?让我担心

我必须干涉系统属性,Sun文档声明"如果指定了socksProxyHost,那么所有TCP套接字都将使用SOCKS代理服务器建立连接或接受连接."
WTH?所有TCP套接字?我的数据库连接怎么样?或者其他FTP连接我可能想要在不使用代理的情况下同时打开?他们都会受到影响吗?

有没有其他方法可以做到这一点,不会弄乱我的应用程序的其余部分?

ins*_* me 7

您有几种在Java中使用代理的方法,尤其是1.5版本.

  1. 使用系统属性:快速而强大但灵活性有限
    • 您可以使用SOCKS代理进行所有TCP连接.
    • 您还可以为每个协议设置代理,可以为HTTP,FTP和HTTPS设置代理
    • 对于这两种方法,您可以指定不使用代理的主机列表
  2. 使用java.net.Proxy类(Java 1.5+)来设置(或不设置)ProxyperConnection
  3. 实现java.net.ProxySelector(idem),根据您的标准确定Proxy每个Connection

请参阅有关网络和代理详细Sun技术说明.

  • 好吧,现在`SocketFactory`是要走的路——引用Commons-Net 3.3文档https://commons.apache.org/proper/commons-net/apidocs/org/apache/commons/net/SocketClient.html * “特别值得注意的是 setSocketFactory 方法......这对于添加 SSL 或代理支持特别有用”* (2认同)