4

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

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

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

4

1 回答 1

5

我这样做(对于一个数量级的更多套接字)只需跟踪我上次与特定套接字交谈(或听到)的时间。在间隔内,我对给定年龄的那些人进行 ping 操作。假设套接字连接/断开/通信统一,这给了我一个相当统一的分布。此外,您始终可以将每次迭代的 ping 限制为有限数量的套接字:因为您正在跟踪最后一次通话的信息​​,所以下次您无法访问的那些仍然有资格。

于 2012-08-14T20:25:00.400 回答