delphi 任何人都可以提供任何源代码使用Indy idFTP通过SSL/TLS?

iih3973s  于 2023-02-22  发布在  其他
关注(0)|答案(2)|浏览(188)

我正在尝试使用 Delphi 中的Indy10idFTP组件在端口990上使用TLS与Filezilla服务器进行通信。
我不能让连接方法在你调用它的时候不挂断,因为很明显你做错了什么。
有没有人有任何工作的 Delphi 代码,他们会愿意在这里显示这个特定的场景工作。
谢谢
朱利安

procedure TformMain.btnConnectClick(Sender: TObject);
begin
    IdFTP1.Host := '127.0.0.1';
    IdFTP1.IOHandler := iohFTPSE;
    IdFTP1.Username := 'test';
    IdFTP1.Password := 'Abc123!';
    IdFTP1.UseTLS := utUseExplicitTLS;
    IdFTP1.Port := 990;
    IdFTP1.IOHandler := iohFTPSE;  // a TIdSSLIOHandlerSocketOpenSSL
    IdFTP1.Connect;

    if IdFTP1.Connected then
    begin
      Listbox1.Items.Add('Connected to FTP server');
    end;
end;

连接的调用就挂起了。在FTP服务器本身上,你会看到在端口990上连接的消息,后面跟着一堆220个回复,但之后什么都没有,调用被阻止了。

m1m5dgzv

m1m5dgzv1#

端口990通常用于“隐式”TLS,而不是“显式”TLS。
所以,我会试试这个:

IdFTP1.UseTLS := utUseImplicitTLS;
puruo6ea

puruo6ea2#

设置正确的UseTLS连同数据端口保护和方法sslvSSLv23得到了它为我工作。谢谢大家。

IdFTP1.Host := '127.0.0.1';
IdFTP1.Port := 990;
IdFTP1.Username := '**********';
IdFTP1.Password := '**********';

// Setup TLS
IdFTP1.IOHandler := iohFTPSE;  // a TIdSSLIOHandlerSocketOpenSSL
IdFTP1.UseTLS := utUseImplicitTLS;
IdFTP1.DataPortProtection := ftpdpsPrivate;
iohFTPSE.SSLOptions.Method := sslvSSLv23;

IdFTP1.Connect;

if IdFTP1.Connected then
begin
  Listbox1.Items.Add('Connected to FTP server');
end;

相关问题