TcpClient.LingerState Propiedad
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í.
Obtiene o establece información sobre el estado de permanencia del socket asociado.
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
Valor de propiedad
Objeto LingerOption. La permanencia está deshabilitada de manera predeterminada.
Ejemplos
En el ejemplo de código siguiente se establece y obtiene el tiempo de persistencia de los sockets.
// 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
Comentarios
La LingerState
propiedad cambia el comportamiento Close del método . Esta propiedad cuando se establece modifica las condiciones en las que Winsock puede restablecer la conexión. Todavía se pueden producir restablecimientos de conexión en función del comportamiento del protocolo IP.
Esta propiedad controla el período de tiempo que la conexión TCP permanecerá abierta después de una llamada a Close cuando se envíen los datos. Al llamar al método , los Write datos se colocan en el búfer de red saliente. Esta propiedad se puede usar para asegurarse de que estos datos se envían al host remoto antes de que el Close método deje de establecer la conexión.
Para habilitar la persistencia, cree una LingerOption instancia que contenga los valores deseados y establezca la LingerState
propiedad en esta instancia.
En la tabla siguiente se describe el comportamiento del Close método para los posibles valores de la Enabled propiedad y la LingerTime propiedad almacenada en la LingerState
propiedad .
LingerState.Enabled | LingerState.LingerTime | Comportamiento |
---|---|---|
false (deshabilitado), el valor predeterminado |
El tiempo de espera no es aplicable (valor predeterminado). | Intenta enviar datos pendientes 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 y 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á.