2

Delphi 2010 を使用して HTTP DataSnap プロジェクトに取り組んでいます。

クライアントが異常終了したことをサーバーに通知する方法 (例: プロセスの強制終了)?

詳細: クライアントが切断されているかどうかをサーバーに知らせる必要があります。問題はありませんが、Kill プロセスを使用してタスク マネージャーによってクライアントが閉じられたときに問題が発生します。

4

1 に答える 1

1

クライアントがクラッシュしたことをサーバーに通知しません。通知するものが何もないため、通常はできません。サーバーへの唯一の接続はクライアントであり、クライアントはすでにクラッシュしています。

代わりに、クライアントが存在しなくなったことをサーバーに検出させるだけです。それには複数の方法があります。クライアントが定期的に送信することが期待されるキープアライブ シグナルを定義できます。キープアライブ メッセージが到着しない時間が長すぎる場合、サーバーはクライアントがなくなったと見なすことができます。もう 1 つの方法は、ネットワーク操作がいつ失敗したかを検出することです。サーバーがソケットからの読み取りを試み、読み取りが失敗した場合 (「パイプの破損」や「ピアによる接続のリセット」などで)、サーバーはクライアントが存在しないことを認識します。

于 2012-08-30T17:49:34.013 に答える