Java 哪些端口与ApacheCommons FTPClient和enterLocalPassiveMode()一起使用?

Java 哪些端口与ApacheCommons FTPClient和enterLocalPassiveMode()一起使用?,java,apache,ftp,firewall,passive-mode,Java,Apache,Ftp,Firewall,Passive Mode,实际上,我的防火墙有一个问题,在尝试使用FTP存储文件时,导致我的应用程序挂起 我发现这与允许通过端口访问的防火墙有关 我将连接端口设置为21(这也是默认设置),然后 ftp.enterLocalPassiveMode(); 我试图允许通过防火墙上的端口21进行访问,但没有成功 我注意到如果我尝试记录 ftp.getPassivePort(); 它将是每个上传项目的随机端口,通常在30k-50k范围内 我的应用程序允许“主动”模式,但由于这是一个将由许多用户使用的应用程序,因此似乎更倾向于“

实际上,我的防火墙有一个问题,在尝试使用FTP存储文件时,导致我的应用程序挂起

我发现这与允许通过端口访问的防火墙有关

我将连接端口设置为21(这也是默认设置),然后

ftp.enterLocalPassiveMode();
我试图允许通过防火墙上的端口21进行访问,但没有成功

我注意到如果我尝试记录

ftp.getPassivePort();
它将是每个上传项目的随机端口,通常在30k-50k范围内

我的应用程序允许“主动”模式,但由于这是一个将由许多用户使用的应用程序,因此似乎更倾向于“被动”,但用户可能会遇到与我相同的错误

所以我唯一能想到的就是

  • 以某种方式允许在防火墙**上设置一个范围(我看不到该范围的选项,因为其他值都是单端口)**

  • 如果一个被动端口正在经历这种情况,请设法使用它。(似乎是这样)

  • 不要使用被动模式。似乎很多帖子都推荐被动,但我不确定为什么它是完全需要的,为什么不推荐主动

  • 您可以调用FTPClient.enterLocalPassiveMode()来启用被动模式。从那时起,FTPClient将负责在每次打开数据连接时发出PASV命令,直到您通过调用enterLocalActiveMode()更改数据连接模式或关闭连接为止。 我很好奇是否有人知道我最好的行动方案是什么?我不确定这是一个编程问题,还是更适合另一个“堆栈社区”

    因此,它似乎最初处于活动模式


    谢谢你的帮助

    主动/被动模式用于第二个端口,即数据端口。端口21是控制端口。谢谢,我现在正在读这篇文章,我以前读过,它们是分开的,但我想我没有意识到它们的连接是分开的。根据该评论,。被动模式是专门针对防火墙相关问题的,那么,我的问题是什么呢?它说我们告诉客户端上的端口,我正试图找到一种与之相关的方法。主动模式要求客户端分配一个侦听端口,这会出现防火墙问题,基本上已经过时。被动模式要求服务器分配另一个侦听端口。谢谢,但由于某些原因,在被动模式下,我仍然存在防火墙问题。如果我“监视所有端口”,它将挂起,但如果我使用默认列表“监视选定端口”,它将工作。那个么为什么监控会有问题呢。。。我尝试允许“数据包规则”中的所有内容,但不允许任何签名…我不知道有关防火墙的任何信息,但PASV命令要求服务器侦听一个新端口并在应答中返回它。这将是一个短暂的港口,需要开放。我拥有FTP服务器在任何端口侦听的防火墙权限。主动/被动模式用于第二个端口,即数据端口。端口21是控制端口。谢谢,我现在正在读这篇文章,我以前读过,它们是分开的,但我想我没有意识到它们的连接是分开的。根据该评论,。被动模式是专门针对防火墙相关问题的,那么,我的问题是什么呢?它说我们告诉客户端上的端口,我正试图找到一种与之相关的方法。主动模式要求客户端分配一个侦听端口,这会出现防火墙问题,基本上已经过时。被动模式要求服务器分配另一个侦听端口。谢谢,但由于某些原因,在被动模式下,我仍然存在防火墙问题。如果我“监视所有端口”,它将挂起,但如果我使用默认列表“监视选定端口”,它将工作。那个么为什么监控会有问题呢。。。我尝试允许“数据包规则”中的所有内容,但不允许任何签名…我不知道有关防火墙的任何信息,但PASV命令要求服务器侦听一个新端口并在应答中返回它。这将是一个短暂的港口,需要开放。我拥有FTP服务器在任何端口侦听的防火墙权限。