TcpClient.LingerState Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Obtém ou define as informações sobre o estado remanescente do soquete associado.
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 da propriedade
Um LingerOption. Por padrão, a remanescência está desabilitada.
Exemplos
O exemplo de código a seguir define e obtém o tempo de permanência dos soquetes.
// 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
Comentários
A LingerState
propriedade altera a maneira como Close o método se comporta. Essa propriedade quando definida modifica as condições sob as quais a conexão pode ser redefinida pelo Winsock. As redefinições de conexão ainda podem ocorrer com base no comportamento do protocolo IP.
Essa propriedade controla o período de tempo em que a conexão TCP permanecerá aberta após uma chamada para Close quando os dados ainda serão enviados. Quando você chama o método , os Write dados são colocados no buffer de rede de saída. Essa propriedade pode ser usada para garantir que esses dados sejam enviados para o host remoto antes que o Close método cancele a conexão.
Para habilitar a permanência, crie uma LingerOption instância que contenha os valores desejados e defina a LingerState
propriedade como essa instância.
A tabela a seguir descreve o comportamento do Close método para os valores possíveis da Enabled propriedade e a LingerTime propriedade armazenada na LingerState
propriedade .
LingerState.Enabled | LingerState.LingerTime | Comportamento |
---|---|---|
false (desabilitado), o valor padrão |
O tempo limite não é aplicável(padrão). | Tenta enviar dados pendentes até que o tempo limite do protocolo IP padrão expire. |
true (habilitado) |
Um tempo limite diferente de zero | Tenta enviar dados pendentes até que o tempo limite especificado expire e, se a tentativa falhar, Winsock redefine a conexão. |
true (habilitado) |
Um tempo limite zero. | Descarta todos os dados pendentes e Winsock redefine a conexão. |
A pilha de IP calcula o período de tempo limite do protocolo IP padrão a ser usado com base no tempo de viagem de ida e volta da conexão. Na maioria dos casos, o tempo limite calculado pela pilha é mais relevante do que um definido por um aplicativo. Esse é o comportamento padrão de um soquete quando a LingerState
propriedade não está definida.
Quando a LingerTime propriedade armazenada na LingerState
propriedade for definida como maior que o tempo limite do protocolo IP padrão, o tempo limite do protocolo IP padrão ainda será aplicado e substituído.