Структура LINGER (winsock2.h)
Затяжная структура хранит сведения о конкретном сокете, который указывает, как он должен вести себя при постановке данных в очередь для отправки и вызове функции closesocket в сокете.
Синтаксис
typedef struct linger {
u_short l_onoff;
u_short l_linger;
} LINGER, *PLINGER, *LPLINGER;
Члены
l_onoff
Тип: u_short
Указывает, должен ли сокет оставаться открытым в течение указанного периода времени после вызова функции closesocket , чтобы разрешить отправку данных в очереди. Этот элемент может иметь одно из следующих значений.
Значение | Значение |
---|---|
|
Сокет не останется открытым. Это значение устанавливается, если функция setsockopt вызывается с параметром optname , равным SO_DONTLINGER , а параметр optval равен нулю.
Это значение также устанавливается, если функция setsockopt вызывается с параметром optname , для которого задано значение SO_LINGER а структура затяжки, переданная в параметр optval , имеет l_onoff член, равный 0. |
|
Сокет будет оставаться открытым в течение указанного периода времени. Это значение задается, если функция setsockopt вызывается с параметром optname , равным SO_DONTLINGER , а параметр optval не равен нулю.
Это значение также задается, если функция setsockopt вызывается с параметром optname , для которого задано значение SO_LINGER , а структура протяженности , передаваемая в параметр optval , имеет l_onoff элемент, равный ненулевому значению. |
l_linger
Тип: u_short
Время затяжки в секундах. Этот член указывает, как долго следует оставаться открытым после вызова функции closesocket , чтобы включить отправку данных из очереди. Этот элемент применим только в том случае, если l_onoff элемент структуры задается как ненулевое значение.
Это значение устанавливается, если функция setsockopt вызывается с параметром optname , равным SO_LINGER. Параметр optval, передаваемый в функцию setsockopt , должен содержать затяжную структуру, которая копируется во внутреннюю сохраняющуюся структуру, поддерживаемую для сокета.
Комментарии
Элемент l_onoff структуры сохраняющегося объекта определяет, должен ли сокет оставаться открытым в течение указанного времени после вызова функции closesocket , чтобы разрешить отправку данных в очереди. Несколько сбивает с толку то, что этот элемент можно изменить двумя способами:
- Вызовите функцию setsockopt с параметром optname, для SO_DONTLINGER. Параметр optval определяет, как изменяется элемент l_onoff .
- Вызовите функцию setsockopt с параметром optname, для SO_LINGER. Параметр optval указывает, как изменяются члены l_onoff и l_linger .
Элемент l_linger структуры затяжного объекта определяет время в секундах, в течение времени, в течение времени, в течение нескольких секунд, сокет должен оставаться открытым. Этот элемент применим только в том случае, если l_onoff элемент структуры является ненулевым.
Чтобы сокет оставался открытым, приложение должно задать для элемента l_onoff ненулевое значение и задать для элемента l_linger требуемое время ожидания в секундах. Чтобы отключить открытый сокет, приложению достаточно задать для элемента l_onoff структуры затяжной структуры значение 0.
Если приложение вызывает функцию setsockopt с параметром optname , равным SO_DONTLINGER , чтобы задать для элемента l_onoff ненулевое значение, значение элемента l_linger не указывается. В этом случае используемое время ожидания зависит от реализации. Если для сокета было установлено предыдущее время ожидания (путем включения SO_LINGER), это значение времени ожидания должно быть восстановлено поставщиком услуг.
Обратите внимание, что не рекомендуется включать ненулевое время ожидания для неблокивного сокета.
Функцию getsockopt можно вызвать с параметром optname , для которого задано значение SO_LINGER , чтобы получить текущее значение структуры , связанной с сокетом.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Верхняя часть | winsock2.h (включая Winsock2.h) |
См. также раздел
Корректное завершение работы, параметры задержки и закрытие сокета