我已经实现了一个基于此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。
在完全实现这些方法后,可以通过防火墙以被动模式进行访问。