4

私は現在、「サーバー」アプリケーションである非同期TCP / IPソケットC#WinFormsアプリケーションを持っています。アプリケーションは、クライアントへの永続的なソケットを保持します。ハーフオープン接続を検出するためのハートビートパケットを実装したいと思います。

最初は、ループを作成して、xx秒ごとにソケットのコレクション全体にハートビートを送信することを考えました。ただし、これはパフォーマンスに悪影響を与えると思います。

どういうわけかハートビートをずらして、一度に数百のソケットに送信する必要があると思います。これを効果的に達成するための経験/技術/実装を持っている人はいますか?

4

1 に答える 1

5

私はこれを(桁違いに多くのソケットに対して)特定のソケットに最後に話しかけた(または聞いた)時間を追跡するだけで行います。一定の間隔で、特定の年齢以上のソケットにpingを送信します。ソケットが均一に接続/切断/通信すると仮定すると、これにより、かなり均一な分布が得られます。さらに、反復ごとにpingを有限数のソケットに制限することができます。最後に話された情報を追跡しているため、取得できなかった情報は次回も適格です。

于 2012-08-14T20:25:00.400 に答える