idHttpServer を使用して開発された Web サーバー アプリケーションがあります。クライアントが Web サーバーに接続したときに、なんらかの理由で切断された (正常な切断ではない) と、Web サーバーに通知されません。これが通常の動作であることはわかっていますが、クライアントがいつ死ぬかを知る必要があります。
これにはいくつかの方法があります。私は2つの良い方法を知っています:
1 - ハートビート メカニズムを実装します。クライアントソケットは、サーバーがまだ生きていることを通知します (動作させるには、いくつかの作業とコードが必要です)。
2 - TCP キープアライブ。これは、あまり多くのコードや作業を必要としないため、私が最も気に入っている方法です。しかし、これに関していくつか質問がありました。
- これは idHttpServer (サーバー用) と wininet 関数 (クライアント用) で使用できますか?
- それは本当に期待どおりに機能しますか?つまり、クライアントが常に停止すると、サーバーに通知されますか?
- wininetでこれを設定するサンプルはありますか? (これはクライアント側で設定する必要があると思いますよね?)
- クライアントが死んでいることをサーバーに通知するより良い方法はありますか (もちろん indy と wininet を使用)
編集
Delphi 2010 と svn の最後の Indy10 ソース コードを使用しています。