2

短い質問デフォルトのタイムアウト値を 72 秒から 5 秒
に短縮することに危険性や落とし穴はありますか?

背景
VB.NET のクライアント アプリケーションと Python のサーバーがあり、どちらも Windows 7 で実行され、アクティブな接続を監視し、壊れたソケットが検出されるとシャットダウンします。クライアントまたはサーバーのいずれかがシャットダウンされると、すべてのロジックが機能します。物理ネットワーク ケーブルが PC から取り外されると、問題が発生します。このイベントの後、socket.send() がタイムアウトして終了するまでに 72 秒かかります。クライアント側は UI であるため、接続が切断されていることに気付くまでに 1 分以上待つのがどれほどイライラするか想像できます。

編集
1) クライアント UI は、タイムアウト イベント中にブロックされません。障害モードは、メッセージが送信されていないにもかかわらず、接続表示が 72 秒間「接続済み」を示すことです。

2) クライアントとサーバーの両方から 1 秒に 1 回、ハートビート メッセージを送信しています。これらのメッセージ レートでは、いずれかのアプリケーションを閉じると、5 秒以内に接続エラーが発生します。このタイミングは、ネットワーク ケーブルを抜くと消えてしまいます。そのせいで今途方に暮れています…

4

1 に答える 1

0

ハートビートを 1 秒に 1 回送信していて、たとえば 5 秒間ハートビートを受信して​​いない場合は、接続が失われたと見なす必要があります。これは基本的に単なる UI の問題です。情報はありますが、報告していないだけです。

于 2012-07-25T22:10:34.860 に答える