1

C# で tcp リスナーを作成しました。無制限の時間でタイムアウトを 0 に設定しました。リスナーとクライアントの間で週末のように約 50 時間アクティビティがなく、接続が切断されていない場合。死ぬ

この問題を解決するにはどうすればよいかアドバイスしてください。

前もって感謝します。

4

1 に答える 1

0

ルーターは通常、あらかじめ設定された時間が経過すると、アイドル状態の TCP 接続を強制終了します。接続がインターネット経由で行われている場合、これを制御することはできません。この問題を防ぐには、アイドル状態の接続をプログラムで検出し、非常に少量の情報を送信します ( byte[] { 0 };5 分ごとなど)。

これにより、接続がアクティブであるかのように、「キープ アライブ パケット」を送信しないため、オーバーヘッドが追加されません。

別のオプションは、 `Socket.SetSocketOption'を使用して、基礎となるソケットに 'KeepAlive' オプションを設定することです。これは同じ機能を実行するはずですが、カスタムソリューションの方が信頼性が高いことが常にわかっています。

于 2013-05-15T21:03:07.880 に答える