LingerOption.LingerTime Propriedade

Definição

Obtém ou define a quantidade de tempo para permanecer conectado após a chamada ao método Close() se os dados ainda precisam ser enviados.Gets or sets the amount of time to remain connected after calling the Close() method if data remains to be sent.

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 da propriedade

Int32

O tempo, em segundos, para permanecer conectado depois de chamar Close().The amount of time, in seconds, to remain connected after calling Close().

Exemplos

O exemplo a seguir exibe o valor dessa propriedade.The following example displays the value of this property.

Console::Write(  "This application will timeout if Send does not return within " );
Console::WriteLine( Encoding::ASCII->GetString( s->GetSocketOption( SocketOptionLevel::Socket, SocketOptionName::SendTimeout, 4 ) ) );

// Blocks until send returns.
int i = s->Send( msg );

// Blocks until read returns.
array<Byte>^ bytes = gcnew array<Byte>(1024);

s->Receive( bytes );

//Displays to the screen.
Console::WriteLine( Encoding::ASCII->GetString( bytes ) );
s->Shutdown( SocketShutdown::Both );
Console::Write(  "If data remains to be sent, this application will stay open for " );
Console::WriteLine( safe_cast<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
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

Comentários

Use esse valor se você quiser determinar por quanto tempo um fechado Socket tentará transferir os dados não enviados antes de atingir o tempo limite. Você também pode definir esse valor para o período de tempo limite desejado, em segundos.Use this value if you want to determine how long a closed Socket will attempt to transfer unsent data before timing out. You can also set this value to the desired time-out period, in seconds.

Se a Enabled propriedade for true , e você definir LingerTime como 0, o Socket descartará todos os dados pendentes a serem enviados no buffer de rede de saída.If the Enabled property is true, and you set LingerTime to 0, the Socket discards any pending data to send in the outgoing network buffer. Se você alterar esse valor, deverá passar a instância alterada LingerOption para o SetSocketOption método ou definir a LingerState propriedade ou LingerState .If you change this value, you must pass the altered LingerOption instance to the SetSocketOption method or set the LingerState or LingerState property.

A tabela a seguir descreve o comportamento dos possíveis valores da Enabled propriedade e da LingerTime Propriedade armazenada na LingerState propriedade.The following table describes the behavior for the possible values of the Enabled property and the LingerTime property stored in the LingerState property.

enable seconds ComportamentoBehavior
false (desabilitado), o valor padrãofalse (disabled), the default value O tempo limite não é aplicável, (padrão).The time-out is not applicable, (default). Tenta enviar dados pendentes para um soquete orientado a conexão (TCP, por exemplo) até que o tempo limite do protocolo IP padrão expire.Attempts to send pending data for a connection-oriented socket (TCP, for example) until the default IP protocol time-out expires.
true habilitadotrue (enabled) Um tempo limite diferente de zeroA nonzero time-out Tentativas de envio de dados pendentes até o tempo limite especificado expiram e, se a tentativa falhar, o Winsock redefinirá a conexão.Attempts to send pending data until the specified time-out expires, and if the attempt fails, then Winsock resets the connection.
true habilitadotrue (enabled) Um tempo limite zero.A zero timeout. Descarta todos os dados pendentes.Discards any pending data. Para o soquete orientado a conexão (TCP, por exemplo), o Winsock redefine a conexão.For connection-oriented socket (TCP, for example), Winsock resets the connection.

A pilha de IP computa o período de tempo limite do protocolo IP padrão a ser usado com base no tempo de ida e volta da conexão.The IP stack computes the default IP protocol time-out period to use based on the round trip time of the connection. Na maioria dos casos, o tempo limite calculado pela pilha é mais relevante do que um definido por um aplicativo.In most cases, the time-out computed by the stack is more relevant than one defined by an application. Esse é o comportamento padrão para um soquete quando a LingerState propriedade não está definida.This is the default behavior for a socket when the LingerState property is not set.

Quando a LingerTime Propriedade armazenada na LingerState propriedade é 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.When the LingerTime property stored in the LingerState property is set greater than the default IP protocol time-out, the default IP protocol time-out will still apply and override.

Aplica-se a