在被动模式下使用 Apache FTP 服务器不起作用 ( "Connection refused by server" )



我已经实现了一个基于此Apache项目的FTP服务器:http://mina.apache.org/ftpserver-project/index.html

服务器旨在支持被动模式并进行相应配置。出于测试目的,我只配置了一个被动端口(4244),但在启动服务器后,没有任何端口在侦听。FTP服务器在标准端口上侦听活动连接,在标准端口侦听SSL连接。

当尝试连接FTP客户端时,我会收到以下错误(毫不奇怪):

状态:正在解析localhost 的地址

状态:正在连接到[::1]:4244…

状态:连接尝试失败;ECONNREFUSED-服务器拒绝连接";,尝试下一个地址。

状态:正在连接[fe80::1%lo0]:4244…

状态:连接尝试失败;ECONNREFUSED-服务器拒绝连接";,尝试下一个地址。

状态:正在连接127.0.0.1:4244…

状态:连接尝试失败;ECONNREFUSED-服务器拒绝连接";。

错误:无法连接到服务器

我的配置对象正在Apache项目中实现此接口:DataConnectionConfiguration

我在类中加入了一些日志记录,并注意到提供被动端口的方法从未被调用。我希望调用其中一个方法(如requestPassivePort()),因为FTP服务器怎么知道要监听哪个被动端口呢?再说一遍,也许我对被动FTP的工作方式有一个误解。尽管Apache项目中有一些文档,但在被动模式下运行服务器的内容并不多。

也许有人已经使用这个Apache库成功地实现了一个被动FTP服务器,并可以为我提供一些帮助。

非常感谢。

干杯,

Martin

如果其他人也有类似的问题:问题是几个接口方法没有完全实现。-getExternalAddress()返回了一个null值,Apache库没有正确处理它(好吧,它应该也接受null值,但没有)-当所有被动端口都用完时,requestPassivePort()没有返回-1。

在完全实现这些方法后,可以通过防火墙以被动模式进行访问。

最新更新