次のような状況です。
Windows(この場合Win8.1)で確立された接続にタイムアウトはありますか?このタイムアウトを変更できますか?
私は this を見つけましたが、これは確立された接続に関する私の質問に答えていないようです。
デフォルトでは、確立されたTCP接続はタイムアウトしません( ただし、ハードウェアの制限により、タイムアウトする可能性があります )。
アプリケーションはTCPキープアライブメカニズムを使用して、接続の切断をチェックできます。 Firebirdの場合(> 1.5)TCPキープアライブが有効 .
キープアライブ「タイムアウト」はサーバーで設定する必要があります。デフォルトのTCP Windowsのキープアライブ時間間隔 2時間です(ただし5分を推奨) 。これは _HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\KeepAliveTime
_で設定できます。 レジストリキー。
上記のリンクの詳細:
失敗したクライアント接続は、次の時間間隔の後に閉じられます:
KEEPALIVE_TIME+ ( KEEPALIVE_PROBES+1)* KEEPALIVE_INTERVAL
Windowsで次の対応するレジストリ値を使用:
_KEEPALIVE_TIME = KeepAliveTime (default: 7200 seconds)
KEEPALIVE_INTERVAL = KeepAliveInterval (default: 1 second)
KEEPALIVE_PROBES = TCPMaxDataRetransmissions (default: 5)
_
だが:
キープアライブセグメントは、デフォルトでは2時間ごとに送信されます[...]。有効にした場合でも、NetBIOSなどの他の上位層プロトコルは独自のキープアライブ値を送信します。上位層プロトコルが使用するキープアライブ間隔がTCPキープアライブ間隔より短い場合、TCPキープアライブ値は送信されません。たとえば、NetBIOSセッションTCP/IPは60分ごとにNetBIOSキープアライブ要求を送信するため、TCP NetBIOSセッションで有効になっているキープアライブ値は使用されません。
TCP仕様にはタイムアウトまたはキープアライブメカニズムがありません。設定するように設定できるレジストリエントリがありますTCPキープアライブですが、キープアライブを使用するかどうかは実際のアプリケーション次第です。 。この質問の答えを見てください: