我正在创建 ftp客户端,我遇到了问题。
首先,我创建一个套接字,我发送USER和PASS,然后PASV接收IP和PORT,然后创建第二个数据套接字并尝试连接,但是有一个问题。
它将连接5次6,但在第6次我收到错误111 Connection Refused
,我不知道如何解决这个问题。
答案 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 /端口。