【问题标题】:TIdFtp in Delphi XE2 - connect method very slowDelphi XE2中的TIdFtp - 连接方法非常慢
【发布时间】:2014-07-24 19:07:57
【问题描述】:

我在 Delphi XE2 中使用 TIdFTP (Indy 10.2);方法'connect'(创建连接...)非常慢;完成任务需要 7 - 8 秒。 我尝试过不同的配置:被动真或假,自动登录真或假,但或多或​​少相同的情况。 有什么特别的配置需要考虑吗?

【问题讨论】:

  • 被动/主动不适用于Connect(),仅适用于Get()Put()
  • 好的,那么哪个配置/属性可以改变 Connect() 行为?
  • 其实很多。 Connect() 受到六个属性的影响。

标签: delphi ftp indy10


【解决方案1】:

首先,10.2 是一个非常旧且过时的版本。当前版本是 10.6。您应该认真考虑升级。

其次,Connect() 做了很多工作。它总是至少发送一个SYST 命令,但根据以下属性的值,它也可能发送很多额外的命令:

  • 使用主机=真 主持人
  • 自动登录=真 AUTH 1-4 次(仅当 UseTLS 为 utUseRequireTLS 或 utUseExplicitTLS 时) XAUT(仅当 ProxySettings.ProxyType 为 fpcmNone 时) 用户 经过 ACCT OPEN(仅当 ProxySettings.ProxyType 为 fpcmOpen 时) EPSV ALL(仅当支持 EPSV 时) SITE ZONE(仅当支持 SITE ZONE 时) 类型
  • AutoIssueFEAT=真 专长 CLNT

因此需要 7 到 8 秒才能完成并非不合理,具体取决于它必须发送多少命令以及您有多少可用带宽。要让Connect() 尽快返回,请关闭所有自动功能,然后在准备好后手动调用Login()IssueFEAT()

【讨论】:

    【解决方案2】:

    首先我会验证问题是否出在 Indy 上,您是否尝试过使用不同的 ftp 客户端(命令提示符下的 ftp、Filezilla 等)进行连接,因为它可能是服务器速度较慢。我记得我遇到过一个问题,即 FTP 服务器试图进行反向 DNS 查找并停止连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-26
      • 2015-11-18
      • 1970-01-01
      • 2015-09-12
      • 2013-07-22
      • 2019-07-26
      • 2015-07-13
      • 2012-03-19
      相关资源
      最近更新 更多