私のpythonスクリプトでは、次のコマンドを使用してTCPキープアライブをアクティブ化しています:
x = s.setsockopt( socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)
私の目標は、5分間送信がない場合(*)、ソケット接続を閉じることです。私はWindowsで作業しており、pythonスクリプトはデータを受信するだけでクライアントプログラムに送信していません。
私が知っていることは、デフォルトでは、2時間送信がない場合、tryとexceptを使用して接続を閉じることができるのは私だけです。 Windowsの場合、レジストリに移動することで、この待機時間を手動で減らすことができます。しかし、スクリプトから変更できる方法はありますか?
(*)ここで「送信しない」とは、「何も送信しようとしているのではなく」、「何かが静かにネットワーク上のパケットを食べている」ことを意味します。
Windowsの場合、Pythonの場合:
これにより、10秒のキープアライブ時間と3秒のキープアライブ間隔でソケットキープアライブが有効になります。
sock.ioctl(socket.SIO_KEEPALIVE_VALS, (1, 10000, 3000))
詳細情報 こちら