Wiki:Delphi第三方TCP/IP组件库的当前最新技术

Jer*_*ers 21 delphi wiki tcp delphi-2007 delphi-xe

我已经做了大约18个月的裸机TCP/IP,所以我想知道目前的技术水平是多少.

我正在寻找正面和负面两个方面,开发服务器和客户端软件.
我将做一个需要坚如磐石的TCP/IP层的项目,所以对我来说这是一个重要的方面:)

为了成为一个社区维基,我正在寻找更广泛的答案,而不仅仅是'坚如磐石'.因此,例如关于特征宽度的信息也是值得赞赏的.

我将使用答案中的相关方面更新问题,以获得具有这些库的平衡概述的Wiki条目.

例如,请参阅下面我的回答以及我过去与Indy的经历我对Indy中的异常处理和反冻结感到矛盾,虽然我已经习惯了它,但仍感觉有点不自然.

现在我用Delphi 2007(非Unicode)和XE(Unicode)开发,所以我考虑的库应该至少支持那两个Delphi版本.

Jer*_*ers 9

编辑:我对Indy过去经历的总结和评论(感谢Eugene,Marjan)(请使用当前的Indy最新技术进行更新):

优点:

  • 与德尔福一起发货
  • 成熟
  • 发展社区
  • 开源让很多眼睛仔细检查这些来源
  • 源代码中的大量有价值的评论文档
  • OpenSSL支持
  • 支持广泛的Delphi版本(包括2007和XE)
  • 广泛的协议选择

缺点:

  • Delphi发布的版本并不总是最稳定的版本; 从源代码下载通常需要获得稳定的构建
  • (同时)许多重复的代码现在在Delphi中(但是Indy需要与旧的Delphi版本兼容)
  • 并非所有TCP/IP组件都是最新的(例如,当时POP3客户端组件不支持某些基本的POP3命令)
  • 版本互操作性很痛苦:从一个Indy版本升级到另一个版本可能非常耗时
  • 我对Indy的异常处理和反冻结感到矛盾,虽然我已经习惯了它,但它仍然感觉有点不自然.
  • 在构建更新之间进行了重大更改; ifdefs需要容纳那些
  • 根本没有明确的发布状态,很长一段时间没有RC,获取主干可以使你的本地副本不稳定

  • 加入缺点:如果有的话,发布状态不明确.很长一段时间没有发布候选人,甚至没有"标记"稳定的数字.并且总是获得最新的来源不是一种选择,因为它会在您自己的产品中引入不稳定性. (3认同)

Cos*_*und 5

ICS - Internet组件套件

ICS - 见www.overbyte.be.由FrançoisPiette开源.对我而言,这一直是Indy的第一选择.这是最有趣的卖点:它使得使用异步东西变得容易,而异步似乎更接近"裸机"套接字编程.

我用它来构建一个相当复杂的VNC代理,代理本身(服务器)是用ICS构建的,客户端是Indy和ICS的混合体.在需求高的时期,代理处理大约100个同时连接和大约10个同时的VNC屏幕会话.它平均消耗5 mbit/s,通过两个不同的Internet连接处理连接.我不认为100 + 10是限制,因为服务器处理没有任何问题,CPU使用率太低,无法提及.

优点:

  • 异步工作
  • 初学者更容易,因为它不需要线程
  • 支持大量协议

缺点:

  • 依赖于Windows消息传递.我对此并不满意.
  • 异步行为使得实现大多数协议稍微困难(因为大多数协议都采用发送命令/接收响应的形式).这对大多数人来说无关紧要,因为ICS为最常用的协议提供了现成的实现.

话虽如此,我在很长一段时间内都没有使用过ICS,我并没有及时了解所有的花里胡哨.这是CW,所以请编辑和扩展!