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 по умолчанию будет по-прежнему применяться и переопределяться.