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


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.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 Если свойство имеет значение trueLingerTime 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 по умолчанию по-прежнему применяется и переопределяется.

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