2

idHttpServer切断時に発生するイベントはありますか?

idHTTPServer切断とは、クライアントが切断されたときではなく、何らかの理由で切断されたときを意味します。

もっとうまく説明できます:idHTTPServerがソケット ポートをリッスンしているときに、なんらかの理由でコンピューターがネットワークから切断された場合 (たとえば、ネットワークが利用できなくなった場合など)、コンポーネントは動作しなくなります (リッスンを停止します)。その場合、再接続する (ポートを再度開く) 必要があります。ヘルプによると、はidHttpServer.OnDisconnect、クライアントがサーバーから切断されたときにのみ起動されます。

4

2 に答える 2

3

一定間隔で自己接続からサーバーへのウォッチドッグ接続を作成することを検討できます。接続できなかった場合は、サーバーを再起動するか、問題を修正するために必要なことは何でもします。

これには、実際にサーバーへの接続をテストしているという追加のボーナスがあります。そのため、クライアントの問題接続を引き起こす可能性のある他の問題が発生した場合、これらが取り上げられます。

これは、サーバーを閉じ、強制終了し、再起動する機能を持つ別のアプリケーションでも実行できます

于 2012-06-21T07:58:43.497 に答える
2

問題の解決に役立つ 2 つの提案があります。

まず、毎分 (または選択した間隔) に 1 回、ポートがまだリッスンしているかどうかをウィンドウに「尋ねる」タイマーを追加します。Indy にはこれを行うメカニズムがないため、これは Indy の外で行う必要があります。このポートがリッスンしていないことが Windows から通知された場合は、これをログに記録し、サーバーを再起動します。このログを定期的にチェックして、アプリがポートのリッスンを停止することを報告したかどうかを確認してください。これにより、本当に切断されているかどうかがわかります。

次に、サーバー ソケットを毎晩再起動することを検討することをお勧めします。たとえば、毎晩深夜にサーバー ソケットを停止してから開始し、新しい接続を確保します。変数のオーバーフローが発生する可能性があります。たとえば、数値を常にインクリメントしていて、その数値がどんどん大きくなり続けると、時間の経過とともにその数値がアプリケーションで保持できないほど大きくなります。これは、インクリメントの速度に応じて、実行時間の 5 秒または 5 か月の間で発生する可能性があります。

于 2012-06-20T18:00:22.600 に答える