Поделиться через


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

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

Интервал времени, заданный в секундах, в течение которого объект остается подключенным после вызова метода 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 по умолчанию будет по-прежнему применяться и переопределяться.

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