[右] PASV
[右] 227 Passive mode on (115,47,68,228,35,40)
[右] 正在打开数据连接 IP: 115.47.68.228 端口: 9000
[右] LIST -al
[右] 150 Starting ASCII transfer for file listing.
[右] 226 Transfer done. 2731 bytes transferred.
[右] 列表完成: 2 KB 于 0.25 秒 (10.3 KB/秒)
------------------------------------------------------------------上面的命令过程 是 FlashFXP 这款软件的。。我自己也尝试写一个MINI版的 FTP客户端~对PASV 命令很疑惑。。他到底是什么意思。。首先,我发送 PASV 后来后, 收到 (115,47,68,228,35,40) ,解析成IP 和 端口是 115.47.68.228  端口 9000然后我重新 Create 创建一个Socket ,连接到 IP上 和 端口上~ 然后对其发送 LIST 命令。。可就是无法获得其 返回的 LIST 列表数据。。- -! 一直处于接收循环。。界面假死。。于是我又尝试,在 9000端口发送 LIST命令,在 21 端口 接收数据。。还是没收到。。这个PASV 命令 究竟应该如何操作= =!!!~~就是说。。发送 PASV 后,应该如何获得 服务器的文件列表

解决方案 »

  1.   

    先检查9000端口的连接是否建立起来;
    LIST命令是通过命令通道发送的;
      

  2.   

    如果我没记错,list命令应该在控制连接上发送,而不是第二个数据连接
      

  3.   

    楼上正解,PASV的端口是在接收下载数据时建立的数据端口,而LIST指令返回的文件列表是在原来的控制端口(21)上进行获取的。
      

  4.   

    LIST是在原来的控制端口进行(默认的21),PASV发过去获得服务器与客户进行传送数据的数据连接的ip和端口,这个套接字只负责传数据
    命令都是用控制连接完成