web-dev-qa-db-ja.com

pythonスクリプトを使用してTCPキープアライブタイマーを変更する方法

私のpythonスクリプトでは、次のコマンドを使用してTCPキープアライブをアクティブ化しています:

x = s.setsockopt( socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)

私の目標は、5分間送信がない場合(*)、ソケット接続を閉じることです。私はWindowsで作業しており、pythonスクリプトはデータを受信するだけでクライアントプログラムに送信していません。

私が知っていることは、デフォルトでは、2時間送信がない場合、tryとexceptを使用して接続を閉じることができるのは私だけです。 Windowsの場合、レジストリに移動することで、この待機時間を手動で減らすことができます。しかし、スクリプトから変更できる方法はありますか?

(*)ここで「送信しない」とは、「何も送信しようとしているのではなく」、「何かが静かにネットワーク上のパケットを食べている」ことを意味します。

31
John

Windowsの場合、Pythonの場合:

これにより、10秒のキープアライブ時間と3秒のキープアライブ間隔でソケットキープアライブが有効になります。

sock.ioctl(socket.SIO_KEEPALIVE_VALS, (1, 10000, 3000))

詳細情報 こちら

11
Ayy