HTTP サーバーとして機能する外部デバイスと通信する Delphi 6 アプリケーションがあります。このアプリケーションには ICS TWSocket コンポーネントを使用しています。デバイスと通信するためにソケットを開き、サーバーと通信するために必要なヘッダーとボディの作成を処理します。つまり、私は ICS HTTP クライアント コンポーネントを使用していませんが、下位レベルの TWSocket コンポーネントを使用して、必要な HTTP "ハンドシェイク" を自分で処理しています。
作成して外部デバイスに送信するヘッダーには、キープアライブ フラグが TRUE に設定されています。私のシステムでは、外部デバイスに何かを送信した後、接続は継続的に開いたままになり、約 30 秒間非アクティブになるまで閉じません (HTTP サーバーとして外部デバイスの要求を行わない 30 秒間)。 . 外部デバイスが閉じているのか、Microsoft Windows が閉じているのかはわかりません。ただし、重要な点は、通常は複数の送信を行うことができ、約 30 秒間何も送信しないまで接続が開いたままになるということです。これは正常に機能し、私のコードが期待するものです。
ただし、一部のユーザー システムでは、送信のたびにソケットが閉じられます。閉じられたソケットをチェックし、必要に応じて外部デバイスへの再接続を試みるコードがありますが、トランザクションごとに再接続する必要はありません。
私の質問は次のとおりです。
一部のユーザー システムでこの異常な動作を引き起こしている可能性のあるソケットのシステム設定はありますか?
もしそうなら、問題のあるパラメーターを照会し、各トランザクションではなく 30 秒間の非アクティブ時に予想される終了に設定するために使用できる Windows API 関数呼び出しはありますか?
その場合、ユーザーのシステムで実行されている他のプログラムに悪影響を与えないように、またはどのように行うことができますか?