2

サーバーと通信するために TClientSocket と TServerSocket を使用しています。問題は、サーバーが次の例外を発行することによって接続が失われることがあることです: WsaSend のエラー、アクセス違反など、またはクライアントによって: 非同期ソケットエラー。

Witch は、こ​​れらのエラーから回復し、接続を開いたままにしておくための最良の方法です。

4

2 に答える 2

5

「何があっても接続を開いたままにする」ということはありません。ケーブルが切れたら?できる最善の方法は、ある間隔でハートビートを送信して、中間ルーターにその接続の使用にまだ関心があることを知らせ、すべてのエラーを慎重に処理し、必要に応じて接続を再確立することです。

于 2012-05-25T12:20:09.210 に答える
1

すばらしい質問です...あなたが受け取っているのはWSAECONNABORTED ( Asynchronous Socket Error 10053 )です。

私のコードでそれが起こらないようにするにはどうすればよいですか? さて、Keepalive と呼ばれるものがあります。Keep-Alive という名前を注意深く調べると、接続を維持することを意味し、Null データを接続に送信するだけです (一方向の場合もあります)、それだけです...

私はタイマー(TmrKeepAliveという名前)を作成し、その間隔を5000ミリ秒(5秒)に設定しました.KeepAliveの詳細情報.

編集: また、独自の KeepAlive メカニズムを作成したくない場合は、これを確認してください

于 2013-01-07T23:40:51.593 に答える