我已经基于这个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服务器,并且可以为我提供一些帮助。
非常感谢。
干杯,
马丁
答案 0 :(得分:0)
如果其他人有类似的问题:问题是几个接口方法没有完全实现。 - getExternalAddress()返回一个空值,Apache库没有正确处理它(好吧,它应该也接受一个空值,但没有) - 当所有被动端口都用完时,requestPassivePort()没有返回-1。
完全实现这些方法后,通过防火墙以被动模式进行访问。