Delphi 中用于 FTP 的 WinInet 包装器

Posted

技术标签:

【中文标题】Delphi 中用于 FTP 的 WinInet 包装器【英文标题】:WinInet wrapper for FTP in Delphi 【发布时间】:2011-10-09 11:24:34 【问题描述】:

请给点建议。我想在 WinInet 上的 Delphi 中开发 FTP / SFTP / FTPS 客户端下载管理器。有什么更好的方法(Indy、ISC Components、WinInet ...)?可能已经有了解决方案?

【问题讨论】:

WinInet 不支持 SFTP。 【参考方案1】:

您没有指定您的 Delphi 版本和目标平台(x64 和 MacOSX 在最新版本的 Delphi 中可用),所以这里有一些通用建议:

    WinInet: 根本不支持 FTPS,因此这为您排除了这种可能性。

    Indy: 与Delphi打包(免费),在Delphi最新版本中全面支持,成熟,应用广泛,使用同步模型(需要使用线程所以网络访问不锁定 GUI)。

    ICS Components:免费、成熟,目前显然不支持 Delphi XE2,因此没有明确的 x64 支持。被广泛使用的。使用异步模型(不需要线程,在 GUI 线程上使用回调)。

    Synapse:鲜为人知的库(免费),比上述两个更紧凑且易于理解。也有 FTPS 支持,最近没有更新,但在 Delphi 2007-2009 上工作正常。同步模型。

我与以上四个都合作过,很难推荐其中一个。它们都可以满足您的需求(WinInet 除外),它只是归结为您觉得更舒服或已经在您的应用程序中使用的模型(同步/异步),以及您需要什么级别的平台/编译器支持。如果您看不出选择 #3 或 #4 的任何理由,我会说选择 Indy,因为它与 Delphi 捆绑在一起,支持 x64/MacOSX,并且可能会在下一个中工作Delphi 的版本。

【讨论】:

对于一个应用程序,我们也发现并评估了上述选项,但决定使用 putty.org 的 psftp.exe 并通过 CreateProcess 调用它,这是一种完全不同的处理方式,但提供我们正在寻找的稳定性和可配置性程度。【参考方案2】:

我不记得确切的原因,但是当我们需要实现 sFTP 和 FTP 时,我们选择了 ipWorks (http://www.nsoftware.com/ipworks) 和 ipWorks SSL/SSH。虽然,我不是付钱的人,所以我并不担心费用。

这可能只是因为我们已经将 ipWorks 用于 FTP 部分。

【讨论】:

【参考方案3】:

我有一个 rotine 执行外部应用程序,这种情况下应用程序是 WinSCP。如果有必要我可以插入示例。

【讨论】:

这个答案并没有真正回答问题,请查看已批准的答案,看看是否可以添加更多内容 请添加示例,否则您的答案不符合 Stack Overflow 上答案所需的格式。

以上是关于Delphi 中用于 FTP 的 WinInet 包装器的主要内容,如果未能解决你的问题,请参考以下文章

WinInet 帖子的简单包装函数(在 Delphi 中)

Wininet 客户端端口 - delphi 2010

Delphi - 需要 XE2 代码到 Delphi7。使用wininet下载文件

delphi中的动态数组和wininet?

Delphi用WinInet用用户名和密码下载文件

Delphi WinAPI InternetGetConnectedState(wininet.h)