java - 将 FTP 代理与 apache commons-net 一起使用

标签 java ftp apache-commons-net

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

但是看着这个Does FTPClient support FTP connections through an FTP proxy server?让我担心。

我不得不干预系统属性,Sun 文档指出“如果指定了 socksProxyHost,则所有 TCP 套接字将使用 SOCKS 代理服务器建立连接或接受连接。”
什么?所有 TCP 套接字?我的数据库连接呢?或者我可能想在不使用代理的情况下同时打开其他 FTP 连接?他们都会受到影响吗?

有没有其他方法可以做到这一点而不影响我的应用程序的其余部分?

最佳答案

在 Java 中有多种使用代理的方法,尤其是从 1.5 版开始。

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

参见 detailled Sun technote on networking & proxies .

关于java - 将 FTP 代理与 apache commons-net 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1104134/

相关文章:

java - 具有分页、排序和规范的 JPA

java - 用 Java 下载整个 FTP 目录 (Apache Net Commons)

powershell - 每两到三次成功上传后ftp上传失败

java - 收到 FTP 响应 421。服务器关闭连接

java - 与文件相关的 NullPointerException

java - 我无法让我的堆栈正常工作

java - 设计可以在运行时创建类实例的应用程序

python - 处理并行 ftp 下载错误

java - 使用 Java 通过代理进行 FTP 连接