短い質問デフォルトのタイムアウト値を 72 秒から 5 秒
に短縮することに危険性や落とし穴はありますか?
背景
VB.NET のクライアント アプリケーションと Python のサーバーがあり、どちらも Windows 7 で実行され、アクティブな接続を監視し、壊れたソケットが検出されるとシャットダウンします。クライアントまたはサーバーのいずれかがシャットダウンされると、すべてのロジックが機能します。物理ネットワーク ケーブルが PC から取り外されると、問題が発生します。このイベントの後、socket.send() がタイムアウトして終了するまでに 72 秒かかります。クライアント側は UI であるため、接続が切断されていることに気付くまでに 1 分以上待つのがどれほどイライラするか想像できます。
編集
1) クライアント UI は、タイムアウト イベント中にブロックされません。障害モードは、メッセージが送信されていないにもかかわらず、接続表示が 72 秒間「接続済み」を示すことです。
2) クライアントとサーバーの両方から 1 秒に 1 回、ハートビート メッセージを送信しています。これらのメッセージ レートでは、いずれかのアプリケーションを閉じると、5 秒以内に接続エラーが発生します。このタイミングは、ネットワーク ケーブルを抜くと消えてしまいます。そのせいで今途方に暮れています…