次の方法で共有


ServicePointManager.SetTcpKeepAlive(Boolean, Int32, Int32) メソッド

定義

TCP 接続のキープアライブ オプションを有効または無効にします。

public:
 static void SetTcpKeepAlive(bool enabled, int keepAliveTime, int keepAliveInterval);
public static void SetTcpKeepAlive(bool enabled, int keepAliveTime, int keepAliveInterval);
static member SetTcpKeepAlive : bool * int * int -> unit
Public Shared Sub SetTcpKeepAlive (enabled As Boolean, keepAliveTime As Integer, keepAliveInterval As Integer)

パラメーター

enabled
Boolean

true に設定すると、指定した keepAliveTimekeepAliveInterval の値を使用して、TCP 接続の TCP キープアライブ オプションが有効になります。

false に設定すると、TCP キープアライブ オプションは無効になり、残りのパラメーターは無視されます。

既定値は false です。

keepAliveTime
Int32

最初のキープアライブ パケットが送信されるまで、タイムアウト (ミリ秒単位) をアクティビティなしで指定します。

値は 0 より大きい必要があります。 0 以下の値が渡されると、 ArgumentOutOfRangeException がスローされます。

keepAliveInterval
Int32

受信確認が受信されない場合に連続するキープアライブ パケットが送信されるまでの間隔をミリ秒単位で指定します。

値は 0 より大きい必要があります。 0 以下の値が渡されると、 ArgumentOutOfRangeException がスローされます。

例外

keepAliveTimeパラメーターまたは keepAliveInterval パラメーターに指定された値が 0 以下です。

注釈

アプリケーションは、TCP/IP プロバイダーが TCP 接続でキープアライブ パケットの使用を有効にすることを要求できます。 既定では、TCP 接続でのキープアライブ パケットの使用は無効になっています。

TCP ソケットが初期化されたときの既定の設定では、キープアライブ タイムアウトが 2 時間、キープアライブ間隔が 1 秒に設定されます。 keepAliveTime パラメーターは、最初のキープアライブ パケットが送信されるまで、タイムアウト (ミリ秒単位) をアクティビティなしで指定します。 keepAliveInterval パラメーターは、受信確認が受信されない場合に連続するキープアライブ パケットが送信されるまでの間隔をミリ秒単位で指定します。 キープアライブ プローブの数は変更できず、10 に設定されます。

キープアライブの結果として TCP 接続が切断されると、ソケットで進行中のすべての呼び出しにNetworkResetSocketErrorが返され、後続の呼び出しはNotConnectedSocketErrorで失敗します。

このメソッドはスレッド セーフではありません。 同時に作成された ServicePoint では、TCP キープアライブの値が部分的に変更されることがあります。

.NET 9 以降、 HttpWebRequest では SocketsHttpHandler.ConnectCallback を使用して、基になるソケットの TCP キープ アライブ オプションを、このメソッドに指定された値に設定します。

適用対象

こちらもご覧ください