次の方法で共有


TcpClient.LingerState プロパティ

定義

関連付けられているソケットの待機状態に関する情報を取得または設定します。

public:
 property System::Net::Sockets::LingerOption ^ LingerState { System::Net::Sockets::LingerOption ^ get(); void set(System::Net::Sockets::LingerOption ^ value); };
public System.Net.Sockets.LingerOption? LingerState { get; set; }
public System.Net.Sockets.LingerOption LingerState { get; set; }
member this.LingerState : System.Net.Sockets.LingerOption with get, set
Public Property LingerState As LingerOption

プロパティ値

LingerOption。 既定では、接続の待機は無効です。

次のコード例では、ソケットの残留時間を設定して取得します。

// sets the amount of time to linger after closing, using the LingerOption public property.
LingerOption^ lingerOption = gcnew LingerOption( true,10 );
tcpClient->LingerState = lingerOption;

// gets the amount of linger time set, using the LingerOption public property.
if ( tcpClient->LingerState->LingerTime == 10 )
      Console::WriteLine( "The linger state setting was successfully set to {0}", tcpClient->LingerState->LingerTime );
// sets the amount of time to linger after closing, using the LingerOption public property.
LingerOption lingerOption = new LingerOption (true, 10);

tcpClient.LingerState = lingerOption;

// gets the amount of linger time set, using the LingerOption public property.
if (tcpClient.LingerState.LingerTime == 10)
    Console.WriteLine ("The linger state setting was successfully set to " + tcpClient.LingerState.LingerTime.ToString ());
' Sets the amount of time to linger after closing, using the LingerOption public property.
Dim lingerOption As New LingerOption(True, 10)
tcpClient.LingerState = lingerOption

' Gets the amount of linger time set, using the LingerOption public property.
If tcpClient.LingerState.LingerTime = 10 Then
   Console.WriteLine(("The linger state setting was successfully set to " + tcpClient.LingerState.LingerTime.ToString()))
End If

注釈

プロパティは LingerState 、メソッドの動作方法 Close を変更します。 このプロパティを設定すると、Winsock によって接続をリセットできる条件が変更されます。 接続のリセットは、IP プロトコルの動作に基づいて引き続き発生する可能性があります。

このプロパティは、 の呼び出し後、データの送信が残っている場合に Close TCP 接続を開いたままにする時間の長さを制御します。 メソッドを Write 呼び出すと、データは送信ネットワーク バッファーに配置されます。 このプロパティを使用すると、メソッドが接続を切断する前に、このデータがリモート ホストに確実に Close 送信されるようにすることができます。

残留を有効にするには、目的の LingerOption 値を含むインスタンスを作成し、 プロパティを LingerState このインスタンスに設定します。

次の表では、 プロパティの Close 使用可能な値と、 プロパティに格納されている プロパティに Enabled 対する メソッドの LingerTime 動作について LingerState 説明します。

LingerState.Enabled LingerState.LingerTime 動作
false (無効)、既定値 タイムアウトは適用されません (既定値)。 既定の IP プロトコルタイムアウトが期限切れになるまで、保留中のデータの送信を試みます。
true (有効) 0 以外のタイムアウト 指定したタイムアウトが切れるまで保留中のデータの送信を試行し、試行が失敗した場合、Winsock は接続をリセットします。
true (有効) タイムアウトが 0 です。 保留中のデータを破棄し、Winsock によって接続がリセットされます。

IP スタックは、接続のラウンド トリップ時間に基づいて、使用する既定の IP プロトコルタイムアウト期間を計算します。 ほとんどの場合、スタックによって計算されるタイムアウトは、アプリケーションによって定義されたタイムアウトよりも関連性が高くなります。 これは、 プロパティが設定されていない場合のソケットの既定の LingerState 動作です。

プロパティに LingerTime 格納されているプロパティが既定の IP プロトコルタイムアウトより大きく設定されている LingerState 場合、既定の IP プロトコルタイムアウトは引き続き適用され、オーバーライドされます。

適用対象

こちらもご覧ください