web-dev-qa-db-ja.com

システム全体の有効化TCP Windowsシステムでのキープアライブ

KeepAliveTimeおよび関連するレジストリー変数を変更/追加して、Windowsマシンにアイドル接続でTCPキープアライブパケットを送信させることができますか?

私は誰かがこれをうまく動かしているかどうか知りたいです。具体的には、TCP接続でアイドリングしているアプリケーションが、接続を維持するために何もしていません(setsockopt)場合。

KeepAliveTime を使用した システム全体のキープアライブの設定 に関するMicrosoft TechNetの詳細と、関連するレジストリ変数。

HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\KeepAliveTime

keep-aliveを使用するためのLinuxシステム全体の構成 のようです。
しかし、これにはプログラムがsetsockopt()を使用してキープアライブを要求する必要があります(正しいですか)。

カーネルで構成されている場合でも、キープアライブサポートはLinuxのデフォルトの動作ではないことに注意してください。プログラムは、setsockoptインターフェイスを使用して、ソケットのキープアライブ制御を要求する必要があります。キープアライブを実装するプログラムは比較的少ない...

5
nik

LinuxのようなWindowsのTCPキープアライブ機能の評価は正しいです。

TCPキープアライブに関連するすべてのレジストリパラメータを操作できますが、アプリケーションがsetsockopt()を使用してキープアライブを要求しない限り、デフォルトでは何も送信されません。

Windowsで実際にキープアライブの動作を確認したいが、コードを記述したくない場合は、 PuTTYの「接続」プロパティで「有効化TCPキープアライブ(SO_KEEPALIVE)」を選択します。 SSH/TELNET/etcクライアント、接続を開始し、接続をアイドル状態にして、トラフィックをスニッフィングします(これは、SO_KEEPALIVEを使用するように意図的に構成できることを知っていた最初のアプリです)。

6
Evan Anderson