基本上我的防火墙存在问题,导致我的应用程序在尝试使用FTP存储文件时挂起。
我发现它与我的防火墙有关,允许通过端口进行访问。
我将连接端口设置为21(我也是默认设置),然后设置
ftp.enterLocalPassiveMode();
我尝试允许通过防火墙上的端口21进行访问,但它无效。
我注意到如果我想尝试记录
ftp.getPassivePort();
对于每个上传的项目,它都是一个随机端口,通常在30k-50k范围内。
我的应用程序确实允许“活动”模式,但由于这是一个将被许多用户使用的应用程序,似乎“被动”更受欢迎,但用户可能会遇到与我相同的错误。 / p>
所以我唯一能想到的是
以某种方式允许我的防火墙上的范围**(我没有看到范围的选项,因为其他值都是单个端口)**
如果这是通过(似乎是这种情况)的话,那就找个使用单个被动端口
请勿使用被动模式。似乎Passive被推荐用于许多帖子,但我不确定为什么它是完全需要的,为什么不提供主动呢?
根据http://wiki.apache.org/commons/Net/FrequentlyAskedQuestions
您可以调用FTPClient.enterLocalPassiveMode()来启用被动模式。从那时起,FTPClient将在每次打开数据连接时发出PASV命令,直到您通过调用enterLocalActiveMode()或关闭连接来更改数据连接模式。 我很好奇是否有人知道我的最佳行动应该是什么?我不确定这是编程问题,还是更适合另一个“Stack Community?”
所以它似乎最初处于活动模式。
感谢您的帮助!