FTP被动模式连接被拒绝

时间:2014-03-20 20:29:53

标签: c++ sockets ftp

我正在创建 ftp客户端,我遇到了问题。

首先,我创建一个套接字,我发送USER和PASS,然后PASV接收IP和PORT,然后创建第二个数据套接字并尝试连接,但是有一个问题。

它将连接5次6,但在第6次我收到错误111 Connection Refused,我不知道如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

PASV的响应文本没有标准格式(EPSV确实如此),因此请确保正确解析IP /端口,因为您可能会收到许多不同格式之一由现实世界的服务器使用:

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 /端口。