LingerOption(Boolean, Int32) Constructor
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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á.