idFTP +连接超时

时间:2015-05-25 14:36:32

标签: delphi ftp indy

我一直试图从ftp服务器获取文件,但每次尝试使用我的代码进行连接时都会遇到同样的错误:

EIdSocketError:套接字错误#10060 连接超时。

使用Filezilla 3.4,我可以连接并下载文件,我的代码:

var
  objFTP: TidFTP;
begin
  try
    objFTP := TIdFTP.Create;
    try
      objFTP.Disconnect;
      objFTP.Host := '200.1.81.252';
      objFTP.Port := 990;
      objFTP.Username := 'user_name';
      objFTP.Password := 'user_pass';
      objFTP.Passive := True;
      objFTP.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(objFTP);
      objFTP.UseTLS := utUseRequireTLS;
      objFTP.TransferTimeout := 120000;
      try
        objFTP.Connect;
        objFTP.ChangeDir('/salida/acciones/2015-05-20');
        objFTP.Get('SW052015.003', 'C:\SW052015.txt');
      finally
        objFTP.Disconnect;
      end;
    finally
      FreeAndNil(objFTP);
    end;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;

有什么建议吗?

FileZilla上的配置:

身份验证端口:990

数据传输端口:9080(不知道这是什么)

加密:需要显式FTP over TLS

被动模式

强制UTF-8

1 个答案:

答案 0 :(得分:1)

感谢您的评论,我的代码运作得很好:

var
  objFTP: TidFTP;
  sCaminho: String;
begin
  sCaminho := 'C:\SW052015.txt';
  SysUtils.DeleteFile(sCaminho);
  try
    objFTP := TIdFTP.Create;
    try
      objFTP.Host := '200.1.81.252';
      objFTP.Username := 'user_name';
      objFTP.Password := 'user_pass';
      objFTP.IOHandler := TIdSSLIOHandlerSocketOpenSSL.Create(objFTP);
      objFTP.UseTLS := utUseExplicitTLS;
      objFTP.DataPortProtection := ftpdpsPrivate;
      try
        objFTP.Port := 990;
        objFTP.Passive := True;
        objFTP.Connect;
        objFTP.ChangeDir('/salida/acciones/2015-05-20');
        objFTP.Get('SW052015.003', sCaminho);
      finally
        objFTP.Disconnect;
      end;
    finally
      FreeAndNil(objFTP);
    end;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.