.NET でキープ アライブ チェックを行う方法を探しています。このシナリオは、UDP と TCP の両方を対象としています。
現在TCPで私がしていることは、片側が接続し、送信するデータがない場合、X秒ごとにキープアライブを送信することです。
反対側にデータをチェックしてもらい、X 秒以内に受信されなかった場合は、イベントなどを発生させます。
私がやろうとした1つの方法は、ブロッキング受信を行い、ソケットのRecieveTimeoutをX秒に設定することでした。しかし、問題は、タイムアウトが発生するたびに、ソケットの受信が SocketExeception をスローし、こちら側のソケットが閉じることでした。これは正しい動作ですか? タイムアウト後にソケットが閉じる/終了するのはなぜですか?
データがあり、スリープが受け入れられないかどうかのチェック (スリープ中にデータの受信が遅れている可能性があるため)。
では、これを行う最善の方法は何ですか?また、反対側で説明した方法が失敗するのはなぜですか?