请教各位一下下,有没有人也遇到同样的问题?有没有解决的办法?IdFTP-〉list之后报eidconnclosedgracefully异常,但是可以从服务器得到目录列表;
然后disconnect;
然后在此用list时,FTP应答426,程序就不动了,如果等一会儿,或者重启服务器程序就又可以用了。这是怎么回事?老是这样的话,更改目录的操作就不能进行了。
谢谢各位!

解决方案 »

  1.   

    PASV?
    PORT?
    注意模式问题
      

  2.   

    什么意思?
      filelist := TStringList.Create;
      try
        FTPClient.ChangeDir('/');
     
       
        FTPClient.List(filelist); //这儿出错??
      

  3.   

    是PORTIdFTP.connect,login
    list 返回226和目录列表
    quit 返回221 goodbye!这时马上再发IdFTP.List或是changedir,list
    就会返回446,transfer aborted为啥尼????
      

  4.   

    ?? 没看明白
    FTPClient.Host := sHost;
        FTPClient.Port := iProt;
        FTPClient.Username := UserName;
        FTPClient.Password := sPwd;
        FTPClient.Connect(true,10000);filelist := TStringList.Create;
      try
        FTPClient.ChangeDir('/');
    FTPClient.List(filelist);
    有问题?
      

  5.   


    ……
    filelist := TStringList.Create;
      try
    FTPClient.List(filelist);没用ChangeDir('/'),这时先报“EIdConnectionClosedGracefully”,收到服务器的目录列表(226)这个时候,再发
    ChangeDir('/**');可以进到子目录
    FTPClient.List(filelist);
    这个List就不行了,返回426或者:
    IdFTP.Quit;
    紧接着:
    FTPClient.Host := sHost;
        FTPClient.Port := iProt;
        FTPClient.Username := UserName;
        FTPClient.Password := sPwd;
        FTPClient.Connect(true,10000);filelist := TStringList.Create;
      try
    FTPClient.List(filelist);
    也不行,List返回426
      

  6.   

    是不是先应该changedir('/')到根目录后才能change到子目录?你试试
      

  7.   

    楼上说得对吧,要先应该changedir('/')到根目录后才能change到子目录
      

  8.   

    解决了
    不必设根目录。是模式问题,改用PASV模式就没有问题了。谢谢楼上各位!!