【问题标题】:Is there a way to tell if the FTP server is active or passive in the Java web program?有没有办法在 Java Web 程序中判断 FTP 服务器是主动的还是被动的?
【发布时间】:2019-05-23 00:41:05
【问题描述】:

我正在使用 Apache-Commons-Net 库。

我想知道 FTP 服务器是主动模式还是被动模式。

Apache-Commons-Net 库中有这样的方法吗?

GetDataConnectionMode()是Java中连接后告诉你连接模式的方法,之前想查一下Maud)

private FTPClient ftp;

// the code I want
if(active){
  ftp.enterLocalActiveMode();
}else{
  ftp.enterLocalPassiveMode();
}

// Apply active mode or passive mode to the environment of the server for oneself

【问题讨论】:

  • 它通常不是服务器的属性,但如果您的网络作为客户端;服务器可以同时执行这两种操作,但如果您的客户端位于 NAT 之后,则服务器将无法连接回您的客户端,因此您的客户端需要连接到服务器以进行数据连接。

标签: java ftp apache-commons-net


【解决方案1】:

正如@Erwin 已经评论的那样,服务器不是处于主动或被动模式。服务器通常同时支持这两种模式。

您需要使用的模式,通常取决于您和服务器之间的网络配置,而不是服务器上的某个“开关”。几乎没有任何方法可以检测到这一点。

您所能做的就是尝试一种模式并在第一种模式失败时回退到另一种模式。一般来说,您应该从被动模式开始,因为这往往会更频繁地工作。

另请阅读我关于 FTP connection modes 的文章以及他们所需的网络配置,以了解这是关于什么的。

【讨论】:

    猜你喜欢
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-30
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    • 1970-01-01
    相关资源
    最近更新 更多