【发布时间】:2014-03-20 20:29:53
【问题描述】:
我正在创建 ftp 客户端,但遇到了问题。
首先,我创建了一个套接字,我在其中发送了 USER 和 PASS,然后 PASV 接收了 IP 和 PORT,然后创建了第二个数据套接字并尝试连接,但是出现了问题。
它将连接 5 次 6,但在第 6 次出现错误111 Connection Refused,我不知道如何解决这个问题。
【问题讨论】:
我正在创建 ftp 客户端,但遇到了问题。
首先,我创建了一个套接字,我在其中发送了 USER 和 PASS,然后 PASV 接收了 IP 和 PORT,然后创建了第二个数据套接字并尝试连接,但是出现了问题。
它将连接 5 次 6,但在第 6 次出现错误111 Connection Refused,我不知道如何解决这个问题。
【问题讨论】:
PASV 的响应文本没有标准化格式(EPSV 有),因此请确保正确解析 IP/端口,因为您可能会收到 real- 使用的许多不同格式之一世界服务器:
227 Entering Passive Mode (h1,h2,h3,h4,p1,p2).
227 Entering Passive Mode (h1,h2,h3,h4,p1,p2
227 Entering Passive Mode. h1,h2,h3,h4,p1,p2
227 =h1,h2,h3,h4,p1,p2
只是为了展示一些可能性。
如果您正确解析 IP/端口但仍无法连接,则服务器在 IP/端口上的客户端连接过多,并且没有可用的插槽供您连接,或者 IP/端口被防火墙/路由器阻止,服务器在向您报告 IP/端口时不知道。
不幸的是,connection refused 错误无法提供任何方法来区分这些条件,因此您所能做的就是在传输失败之前尝试连接几次,或者发送ABOR 通知服务器关闭当前的被动 IP/端口,然后发送新的PASV 以获取新的 IP/端口。
【讨论】: