LingerOption.LingerTime Свойство

Определение

Получает или задает интервал времени, в течение которого объект должен оставаться подключенным после вызова метода Close(), если остались данные для отправки.

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

Значение свойства

Int32

Интервал времени, заданный в секундах, в течение которого объект остается подключенным после вызова метода Close().

Примеры

В следующем примере показано значение этого свойства.

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

Комментарии

Используйте это значение, если необходимо определить, как долго закрытое Socket будет пытаться передать неотправленные данные до истечения времени ожидания. Можно также задать для этого параметра требуемое время ожидания в секундах.

Если Enabled свойство имеет значение true , а в качестве значения LingerTime 0, то Socket отклоняет все ожидающие данные для отправки в исходящий сетевой буфер. При изменении этого значения необходимо передать измененный LingerOption экземпляр в SetSocketOption метод или задать LingerState LingerState свойство или.

В следующей таблице описывается поведение для возможных значений Enabled Свойства и LingerTime свойства, хранящегося в LingerState свойстве.

enable seconds Поведение
false (отключено), значение по умолчанию Время ожидания неприменимо (по умолчанию). Пытается отправить ожидающие данные для сокета, ориентированного на соединение (например, TCP), пока не истечет время ожидания протокола IP по умолчанию.
true доступной Ненулевое время ожидания Пытается отправить ожидающие данные до истечения заданного времени ожидания. Если попытка не удалась, Winsock сбрасывает подключение.
true доступной Нулевое время ожидания. Отменяет все ожидающие данные. Для сокета, ориентированного на подключение (например, TCP), Winsock сбрасывает подключение.

В стеке IP-адресов используется период ожидания протокола IP по умолчанию, используемый в зависимости от времени кругового пути соединения. В большинстве случаев время ожидания, вычисленное стеком, больше релевантно, чем определено приложением. Это поведение по умолчанию для сокета, если LingerState свойство не задано.

Если LingerTime свойство, хранящееся в LingerState свойстве, задано больше, чем время ожидания протокола IP по умолчанию, по умолчанию время ожидания протокола IP по-прежнему будет применяться и переопределено.

Применяется к