4

这是我的程序:

Application.FTP.Host:= vHost;
Application.FTP.Port:= vPort;
try
  Application.FTP.AutoLogin := false;
  Application.FTP.Connect;
  Application.FTP.IOHandler.RecvBufferSize := 2048;

TIdFTP在 Delphi XE3 中使用组件。

我想我必须使用这样的东西......

 Application.FTP.UseTLS := utUseRequireTLS;

但编译器不喜欢那行

如何让我的 FTP 应用程序使用 FTPS?

4

2 回答 2

8

首先,您需要SFTP(基于 SSH 的 FTP)还是FTPS(基于 SSL 的 FTP)?它们不是同一件事。Indy 目前不支持 SSH。对于 SSL,您可以将 SSL IOHandler(例如 )附加TIdSSLIOHandlerSocketOpenSSLTIdFTP.IOHandler属性,然后将TIdFTP.UseTLS属性设置为除属性以外的任何内容utNoTLSSupport(是的,TIdFTP确实有UseTLS属性)。如果您需要加密实际的文件传输连接,而不仅仅是命令连接,则将该TIdFTP.DataPortProtection属性设置为ftpdpsPrivate.

于 2013-02-13T14:39:04.860 回答
3

使用 Indy10,您可以添加 TIdSSLIOHandlerSocketOpenSSL 组件并将 FTP.IOHandler 设置为指向该组件。

然后在 TIdSSLIOHandlerSocketOpenSSL 中设置 SSL 选项。

前任。

ftpC.IOHandler:=iohFTPSE; //TIdSSLIOHandlerSocketOpenSSL 
ftpC.UseTLS:=utUseExplicitTLS;
ftpC.DataPortProtection:=ftpdpsPrivate;
于 2013-02-13T14:40:47.207 回答