如何在2500+套接字上实现TCP / IP心跳?

时间:2012-08-14 20:07:36

标签: c# sockets

我目前有一个异步TCP / IP套接字C#WinForms应用程序,它是“服务器”应用程序。该应用程序为客户端保留持久套接字。我想实现一个心跳包来检测半开连接。

最初我想过创建一个循环并每隔xx秒将心跳发送到我的整个套接字集合。但是,我认为这对性能不利。

我想我应该以某种方式错开心跳并立刻发送到几百个插座。有没有人有任何经验/技术/实施来有效地实现这个目标?

1 个答案:

答案 0 :(得分:4)

我这样做(对于一个数量级更多的套接字)只是通过跟踪我上一次与特定套接字交谈(或听到)的时间。在一个时间间隔内,我对那些超过给定年龄的人进行ping操作。假设套接字连接/断开/统一通信,这给了我一个相当均匀的分布。此外,你总是可以在每次迭代时将ping限制为有限数量的套接字:因为你正在跟踪最后交谈的信息,你未获得的信息下次仍然符合条件。