Comparteix a través de


LingerOption(Boolean, Int32) Constructor

Definición

Inicializa una nueva instancia de la clase 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)

Parámetros

enable
Boolean

true para que continúe la conexión después de llamar al método Close(); false en cualquier otro caso.

seconds
Int32

Número de segundos que debe permanecer abierta la conexión después de llamar al método Close().

Ejemplos

En el ejemplo siguiente se establece que un objeto creado Socket previamente permanezca un segundo después de llamar al Close método .

LingerOption^ myOpts = gcnew LingerOption( true,1 );
mySocket->SetSocketOption( SocketOptionLevel::Socket, SocketOptionName::Linger, myOpts );
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)

Comentarios

Es posible que todavía haya datos disponibles en el búfer de red saliente después de cerrar .Socket Use el enable parámetro para especificar si desea Socket que continúe transmitiendo datos sin enviar después de llamar al método close. Use el seconds parámetro para indicar cuánto tiempo desea Socket que intente transferir datos sin sangría antes de que se agote el tiempo de espera. Si especifica true para el enable parámetro y 0 para el seconds parámetro , Socket intentará enviar datos hasta que no quede ningún dato en el búfer de red saliente. Si especifica false para el enable parámetro , Socket se cerrará inmediatamente y se perderán los datos no enviados.

En la tabla siguiente se describe el comportamiento de los Socket.Close métodos y TcpClient.Close en función de los valores posibles de los enable parámetros y seconds cuando se crea una instancia de T:System.Net.Sockets.LingerOption y se establece en la Socket.LingerState propiedad o TcpClient.LingerState .

enable seconds Comportamiento
false (deshabilitado), el valor predeterminado El tiempo de espera no es aplicable (valor predeterminado). Intenta enviar datos pendientes para un socket orientado a la conexión (TCP, por ejemplo) hasta que expire el tiempo de espera predeterminado del protocolo IP.
true (habilitado) Tiempo de espera distinto de cero Intenta enviar datos pendientes hasta que expire el tiempo de espera especificado y, si se produce un error en el intento, Winsock restablece la conexión.
true (habilitado) Un tiempo de espera cero. Descarta los datos pendientes. En el caso del socket orientado a la conexión (TCP, por ejemplo), Winsock restablece la conexión.

La pila de IP calcula el período de tiempo de espera predeterminado del protocolo IP que se usará en función del tiempo de ida y vuelta de la conexión. En la mayoría de los casos, el tiempo de espera calculado por la pila es más relevante que uno definido por una aplicación. Este es el comportamiento predeterminado de un socket cuando no se establece la LingerState propiedad .

Cuando la LingerTime propiedad almacenada en la LingerState propiedad se establece mayor que el tiempo de espera predeterminado del protocolo IP, el tiempo de espera predeterminado del protocolo IP se seguirá aplicando e invalidará.

Se aplica a