LingerOption.LingerTime Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Obtém ou define o tempo para permanecer ligado após chamar o Close() método caso ainda haja dados por enviar.
public:
property int LingerTime { int get(); void set(int value); };
public int LingerTime { get; set; }
member this.LingerTime : int with get, set
Public Property LingerTime As Integer
Valor de Propriedade
O tempo, em segundos, para permanecer ligado após a chamada Close().
Exemplos
O exemplo seguinte mostra o valor desta propriedade.
Console.WriteLine("This application will timeout if Send does not return within " + Encoding.ASCII.GetString(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 4)));
// blocks until send returns
int i = s.Send(msg);
// blocks until read returns
byte[] bytes = new byte[1024];
s.Receive(bytes);
// Display to the screen
Console.WriteLine(Encoding.ASCII.GetString(bytes));
s.Shutdown(SocketShutdown.Both);
Console.WriteLine("If data remains to be sent, this application will stay open for " + ((LingerOption)s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger)).LingerTime.ToString());
s.Close();
Console.WriteLine(("This application will timeout if Send does not return within " + Encoding.ASCII.GetString(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 4))))
' blocks until send returns
Dim i As Integer = s.Send(msg)
' blocks until read returns
Dim bytes(1024) As Byte
s.Receive(bytes)
'Display to the screen
Console.WriteLine(Encoding.ASCII.GetString(bytes))
s.Shutdown(SocketShutdown.Both)
Console.WriteLine(("If data remains to be sent, this application will stay open for " + CType(s.GetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Linger), LingerOption).LingerTime.ToString()))
s.Close()
End Sub
Observações
Use este valor se quiser determinar quanto tempo um fechado Socket tentará transferir dados não enviados antes de expirar. Também pode definir este valor para o período de tempo desejado, em segundos.
Se a Enabled propriedade for true, e definir LingerTime para 0, descarta Socket quaisquer dados pendentes para enviar no buffer de rede de saída. Se alterar este valor, deve passar a instância alterada LingerOption para o SetSocketOption método ou definir a LingerState propriedade ou LingerState .
A tabela seguinte descreve o comportamento dos valores possíveis da Enabled propriedade e da LingerTime propriedade armazenada na LingerState propriedade.
enable |
seconds |
Comportamento |
|---|---|---|
false (desativado), o valor padrão |
O time-out não é aplicável (por defeito). | Tentativas de enviar dados pendentes para um socket orientado à ligação (TCP, por exemplo) até que o tempo de expiração do protocolo IP predefinido. |
true (ativado) |
Um time-out não nulo | Tenta enviar dados pendentes até expirar o tempo especificado e, se a tentativa falhar, o Winsock reinicia a ligação. |
true (ativado) |
Um tempo morto. | Descarta quaisquer dados pendentes. Para soquetes orientados a ligação (TCP, por exemplo), o Winsock reinicia a ligação. |
A pilha IP calcula o período predefinido de timeout do protocolo IP a usar com base no tempo de ida e volta da ligação. Na maioria dos casos, o time-out calculado pela pilha é mais relevante do que um definido por uma aplicação. Este é o comportamento padrão de um socket quando a LingerState propriedade não está definida.
Quando a LingerTime propriedade armazenada nessa LingerState propriedade é definida como maior do que o time-out padrão do protocolo IP, o time-out padrão do protocolo IP continuará a aplicar-se e a sobrescrever.