Структура LINGER (winsock.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 элементу структуры linger задано ненулевое значение.
Это значение устанавливается, если функция setsockopt вызывается с параметром optname , равным SO_LINGER. Параметр optval, передаваемый в функцию setsockopt , должен содержать затяжную структуру, которая копируется во внутреннюю структуру , поддерживаемую для сокета.
Комментарии
Член l_onoff структуры затяжки определяет, должен ли сокет оставаться открытым в течение указанного периода времени после вызова функции closesocket , чтобы разрешить отправку данных в очередь. Несколько сбивает с толку то, что этот элемент можно изменить двумя способами:
- Вызовите функцию setockopt с параметром 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 [только классические приложения] |
Верхняя часть | winsock.h (включая Winsock2.h) |
См. также раздел
Корректное завершение работы, параметры задержки и закрытие сокета