我正在创建一个ftp客户端,我有一个问题。
首先,我创建一个套接字,发送用户,然后传递给PASV一个接收IP和端口,然后创建第二个数据套接字并尝试连接,但有一个问题。
它将连接6的5倍,但在第6次我得到错误的111 Connection Refused
,我不知道如何解决这个问题。
发布于 2014-03-20 20:53:31
对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/端口。
https://stackoverflow.com/questions/22544371
复制相似问题