TcpClient.LingerState プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
関連付けられているソケットの残留状態に関する情報を取得または設定します。
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 = 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 プロパティをこのインスタンスに設定します。
次の表では、Enabled プロパティの使用可能な値に対するClose メソッドの動作と、LingerState プロパティに格納されているLingerTime プロパティについて説明します。
| LingerState.Enabled | LingerState.LingerTime | 行動 |
|---|---|---|
false (無効)、既定値 |
タイムアウトは適用されません (既定値)。 | 既定の IP プロトコルタイムアウトが期限切れになるまで、保留中のデータの送信を試みます。 |
true (有効) |
0 以外のタイムアウト | 指定したタイムアウトが切れるまで保留中のデータの送信を試行し、試行が失敗した場合、Winsock は接続をリセットします。 |
true (有効) |
タイムアウトが 0 です。 | 保留中のデータを破棄し、Winsock によって接続がリセットされます。 |
IP スタックは、接続のラウンド トリップ時間に基づいて、使用する既定の IP プロトコルタイムアウト期間を計算します。 ほとんどの場合、スタックによって計算されるタイムアウトは、アプリケーションによって定義されたタイムアウトよりも関連性が高くなります。 これは、 LingerState プロパティが設定されていない場合のソケットの既定の動作です。
LingerState プロパティに格納されているLingerTime プロパティが既定の IP プロトコルタイムアウトより大きい値に設定されている場合でも、既定の IP プロトコルのタイムアウトが適用され、オーバーライドされます。