不同的FTP服务器返回的数字的位置不一样的,不过我已经找到解决办法了

解决方案 »

  1.   

    啊?
    PASV是被动模式的意思,也就是说由客户链接数据Socket到Server。
    下面是一个例子。
     220 ProFTPD 1.2.0 Server (uhomer1) [uhomer1.hk-site.com] 
    COMMAND:>  USER zhuolin 
    331 Password required for zhuolin. 
    COMMAND:>  PASS ******** 
    230 User zhuolin logged in. 
    COMMAND:>  TYPE I 
    200 Type set to I. 
    COMMAND:>  pwd 
    257 "/" is current directory. 
    COMMAND:>  TYPE A 
     200 Type set to A. 
    COMMAND:>  PASV 
     227 Entering Passive Mode (203,161,226,168,7,181). 
    COMMAND:>  LIST 
     150 Opening ASCII mode data connection for file list 
     226 Transfer complete. 带command:>的是客户发送的,当发送PASV后,Server会告诉你他正在Accept链接的端口。
    格式为。ip0,ip1,ip2,ip3,port0,port1前4位为ip,后两位为端口。
    真实端口号计算为,(port1<<8)|port0,为连接的端口号。
    连接到该口就可以读取数据了