LingerOption.LingerTime Propriedade

Definição

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.

Aplica-se a