为什么的FTPClient有时会对端口命令中的端口号进行错误的计算?这是在活动模式。例如,FTPClient,它可以发送PORT <some>,<ip>,<address>,<here>,235,181,而实际上使用的端口号是60340。这个错误计算的原因是什么?
这种情况可能发生在3.3版上。
我知道ftpClient.enterLocalPassiveMode();可以解决这个问题,但我想知道活动模式不能像预期的那样工作的部分。
发布于 2014-08-07 06:26:13
从您的评论中,我假设您将FTP控件连接与数据连接错误。
我假设60340是FTP控制连接的本地端口。当打开数据连接时,分配60341 (因此是PORT ...,235,181)。
推理:在FTP活动模式中,客户端打开预期数据连接的侦听端口,然后通过现有控制连接上的PORT命令向服务器报告。如果服务器无法连接到端口,则任何TCP/IP数据包都无法到达该端口。当您声称“两台机器仍在端口60340上通信”时,它必须是控制连接。如果连接失败(“无法打开数据连接”),端口上就不能有任何通信。
“无法打开数据连接”错误的实际原因可能是防火墙后面,因此服务器无法连接回客户端。什么是现在的普遍现象。这就是被动模式的好处所在。
https://stackoverflow.com/questions/25153960
复制相似问题