次の方法で共有


LingerOption(Boolean, Int32) コンストラクター

定義

LingerOption クラスの新しいインスタンスを初期化します。

public:
 LingerOption(bool enable, int seconds);
public LingerOption(bool enable, int seconds);
new System.Net.Sockets.LingerOption : bool * int -> System.Net.Sockets.LingerOption
Public Sub New (enable As Boolean, seconds As Integer)

パラメーター

enable
Boolean

true Close() メソッドが呼び出された後も接続されたままになります。それ以外の場合はfalse

seconds
Int32

Close() メソッドが呼び出された後に接続されたままの秒数。

次の例では、Close メソッドを呼び出した後、以前に作成したSocketを 1 秒残すよう設定します。

LingerOption myOpts = new LingerOption(true,1);

mySocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger, myOpts);
Dim myOpts As New LingerOption(True, 1)
       
mySocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger, _
   myOpts)

注釈

Socketを閉じた後も、送信ネットワーク バッファーにデータが残っている可能性があります。 enable パラメーターを使用して、close メソッドが呼び出された後も、Socketが未送信のデータを送信し続けるかどうかを指定します。 seconds パラメーターを使用して、Socketがタイムアウトになる前に未送信データの転送を試みる期間を指定します。enable パラメーターにtrueを指定し、seconds パラメーターに 0 を指定すると、Socketは送信ネットワーク バッファーにデータが残らなくなるまでデータの送信を試みます。 enable パラメーターにfalseを指定すると、Socketはすぐに閉じられ、未送受信のデータは失われます。

次の表では、T:System.Net.Sockets.LingerOption インスタンスが作成され、Socket.LingerState プロパティまたは TcpClient.LingerState プロパティで設定された場合の、enableパラメーターとseconds パラメーターの使用可能な値に基づいて、Socket.CloseメソッドとTcpClient.Close メソッドの動作について説明します。

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

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

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

適用対象