Delphi 印地还是ICS?

Delphi 印地还是ICS?,delphi,indy,Delphi,Indy,谁能告诉我哪个更稳定?我知道每个人都有自己的优点和缺点。但哪一个更适合http等 在我以前的应用程序中,我使用了indy9,但我并不满意,因为有时会出现奇怪的错误 有人能推荐一个吗?我使用Indy 9和10来实现TCP、HTTP和FTP,但问题很少。ICS也是一个不错的选择。它是非阻塞的,这将改变您使用它的方式 我没有使用过它,但我听说过它的优点,也就是阻塞。哪一个更好实际上取决于具体的用例,但我对indy作为http客户端和ICS感到不满意,因为它正是我所需要的,没有太多的随机怪癖 请注意,它

谁能告诉我哪个更稳定?我知道每个人都有自己的优点和缺点。但哪一个更适合http等

在我以前的应用程序中,我使用了indy9,但我并不满意,因为有时会出现奇怪的错误


有人能推荐一个吗?

我使用Indy 9和10来实现TCP、HTTP和FTP,但问题很少。ICS也是一个不错的选择。它是非阻塞的,这将改变您使用它的方式


我没有使用过它,但我听说过它的优点,也就是阻塞。

哪一个更好实际上取决于具体的用例,但我对indy作为http客户端和ICS感到不满意,因为它正是我所需要的,没有太多的随机怪癖


请注意,它是非阻塞的,因此它不仅仅是一个替代品。

我使用Indy 9为100多万用户提供稳定、发布的生产代码,并且从未收到任何奇怪的错误。

我在许多项目中使用Indy。我主要使用9和10作为HTTP服务器和代理。这些项目有时会获得非常密集的流量(HTTP)。印第从来没有让我失望过。它工作非常稳定

但我也有一些“奇怪”的情况,我必须深入挖掘以找到潜在的问题。我也不喜欢印地通过异常处理很多事情的方式。总的来说,我更喜欢ICS编码风格。但是让我去ICS

ICS使用非阻塞插座,而indy使用阻塞插座。虽然非阻塞是可以的,乍一看似乎更好,但我发现它在很多情况下都令人恼火。问题是,由于回调函数,代码的自然流丢失了。这使得编写过程类型的库变得更加困难。此外,我不喜欢通过消息处理一切。对我来说,当与多线程混合时,它很快就会变得混乱。现在多线程是主流

因此,虽然我喜欢ICS中代码的编码风格和质量,但我更喜欢Indy的简单使用和阻塞模式。您更喜欢什么取决于您,但这两个库都是成熟和稳定的


这是我的两分钱。

我也使用印地和ICS

大多数时候,我更喜欢Indy,因为用它实现顺序类型的协议非常容易(请求在它自己的线程中运行,因此您只需读/写连接,非常容易)。使用Indy需要扎实的线程和同步知识。与Runner不同,我喜欢Indy如何使用异常处理“异常”内容,因为它允许我专注于协议的正常流程(我使用try finally块确保释放资源)

我还在一个应用程序中使用了ICS,而Indy只是失败了:我将ICS用于实现TCP/IP代理的应用程序。使用ICS更简单,因为它是非阻塞性的。我能够“代理”我一无所知的TCP/IP协议,所以我不知道字节如何从一端流向另一端。Indy在那个场景中失败了,因为在Indy你在阅读或写作,你不能同时做这两件事。使用ICS来实现顺序类型协议有点麻烦:您基本上需要使用状态机逻辑,将协议分为小段,保持标记放置在周围,以便知道您在协议中的位置。还有一个很大的好处:弗朗索瓦·皮埃特是《ICS》的作者,他在许多论坛和邮件列表上都很活跃,非常乐于助人,并且非常迅速地为与ICS相关的任何事情提供帮助


对我来说,如果我需要用TCP/IP做一些事情,决策路径非常简单:可以用Indy做吗?那就是印第了。如果不能用印地来做,那就用ICS来做

记住,印地总是处于测试阶段。有时你需要使用夜间构建。

我认为答案取决于你想用互联网做什么。如果你准备参与了解它是如何工作的,并且非常有能力的话,Indy是不错的。ICS是一种不同的东西,我已经在许多连接系统中有效地使用了它。但是对于日常的“抓取文件或发送电子邮件”类型的东西,如果你想做一个基本的任务,我几乎总是使用,因为你只是创建组件,
设置选项,它就会工作。该套件相当全面,并获得了有用的更新

我们测试Indy10 IdTCPClient从远程服务器接收视频流,没问题。但当它在接收流的同时,使用它向服务器发送一些数据,一分钟后,接收到的流数据开始丢失数据字节。我们使用嗅探器工具跟踪这个问题,确认IdTCPClient在接收流中丢失了一些字节


因此,我们测试了Indy9.018,同样的问题也发生了,但与Indy 10相比,出现了几次。

虽然我也支持Indy,但我认为ICS的例子更为优越。特别地,我十分同意。Indy10在示例方面非常差。@Runner请看,与Indy问题相关的问题比ICS问题多。你来判断什么更稳定,他们都是稳定的。如果你读了我的答案,你会发现我比Indy更喜欢ICS的代码质量。但是ICS在代码友好和用户友好的部门失败了。而且,在多线程环境中使用它要困难得多