および関連するレジストリ変数を変更/追加して、KeepAliveTime
Windows マシンがアイドル接続時に TCP キープアライブ パケットを送信するようにできますか?
これをうまく動作させた人がいるかどうか知りたいです。具体的には、TCP 接続でアイドル状態のアプリケーションが接続を維持するために特に何もしていないとき (setsockopt) です。
このMicrosoft TechNetの詳細情報システム全体のキープアライブの設定とともにキープアライブタイムおよび関連するレジストリ変数。
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\KeepAliveTime
それはキープアライブを使用するための Linux システム全体の設定ただし
、そのためにはプログラムが を使用してsetsockopt()
キープアライブを要求する必要があります (そうですよね?)。
カーネルで設定されている場合でも、キープアライブ サポートは Linux のデフォルトの動作ではないことに注意してください。プログラムは、setsockopt インターフェイスを使用してソケットのキープアライブ制御を要求する必要があります。キープアライブを実装しているプログラムは比較的少数です...
答え1
Windows の TCP キープアライブ機能が Linux に似ているというあなたの評価は正しいです。
TCP キープアライブに関連するレジストリ パラメータを自由に操作できますが、アプリケーションがsetsockopt()
キープアライブを要求しない限り、デフォルトでは何も送信されません。
Windowsで実際にキープアライブの動作を確認したいが、コードを書きたくない場合は、「接続」プロパティの「TCPキープアライブを有効にする(SO_KEEPALIVE)」にチェックを入れます。パテSSH/TELNET などのクライアントは、接続を開始し、アイドル状態のままにして、トラフィックをスニッフィングします。(これは、SO_KEEPALIVE を使用するように意識的に構成できると私が知っている最初のアプリです...)