Indy或ICS还是?

任何人都可以告诉我哪个更稳定? 我知道每个人都有自己的优点和缺点。 但是,哪一个更适合http等?

在我之前的应用程序中,我使用indy9,但是我对它不满意,因为我有时会遇到奇怪的错误。

任何人都可以推荐吗?


我在很多项目中使用Indy。 我主要使用9和10作为HTTP服务器和代理。 有时这些项目会产生非常激烈的流量(HTTP)。 印迪从来没有让我失望。 它工作非常稳定。

但我也有一些“奇怪”的情况,我不得不深入挖掘潜在的问题。 我也不喜欢Indy倾向于通过例外处理很多事情的方式。 一般来说,我更喜欢ICS编码风格。 但让我去ICS。

ICS使用非阻塞套接字,而indy使用阻塞。 虽然非阻塞没有问题,并且一见成效似乎更好,但我发现它在很多情况下都很刺激。 问题在于代码的自然流动因为回调函数而丢失。 这使得编写程序类型的库变得更加困难。 此外,我不喜欢如何通过消息处理所有事情。 对于我来说,当它与多线程混合在一起时,它会变得非常混乱。 现在多线程是主流。

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

这是我的两分钱。


我也使用Indy和ICS。

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

我还在Indy简单失败的应用程序中使用了ICS:我将它用于实现TCP / IP代理的应用程序。 使用ICS更简单,因为它具有非阻塞性质。 我能够“代理”我一无所知的TCP / IP协议,所以我不知道字节将如何从一端流向另一端。 Indy在这种情况下失败了,因为在Indy你是以太阅读或者你正在写作,你不能同时做两个。 使用ICS来实现顺序类型的协议有点痛苦:你基本上需要使用状态机逻辑,以小的比特制动协议,保持标志位置,以便知道协议中的位置。 更重要的是:ICS的作者FrançoisPiette在很多论坛和邮件列表中都很活跃并且非常有帮助,并且非常及时地帮助处理与ICS相关的任何事情。

对我而言,如果我需要用TCP / IP做些什么,决定的路径非常简单:可以用Indy来完成吗? 然后是Indy。 如果Indy无法完成,那么它将由ICS完成!


我已经使用Indy 9和10进行TCP,HTTP和FTP,但问题很少。 ICS也是一个不错的选择。 它是非阻塞的,这将改变你如何使用它。

我没有用过它,但我听说过有关Synapse的好消息,它也是阻塞的。

链接地址: http://www.djcxy.com/p/76465.html

上一篇: Indy or ICS or ?

下一篇: Callback as parameter of C structure