Структура LINGER (winsock2.h)

Затяжная структура хранит сведения о конкретном сокете, который указывает, как он должен вести себя при постановке данных в очередь для отправки и вызове функции closesocket в сокете.

Синтаксис

typedef struct linger {
  u_short l_onoff;
  u_short l_linger;
} LINGER, *PLINGER, *LPLINGER;

Члены

l_onoff

Тип: u_short

Указывает, должен ли сокет оставаться открытым в течение указанного периода времени после вызова функции closesocket , чтобы разрешить отправку данных в очереди. Этот элемент может иметь одно из следующих значений.

Значение Значение
0
Сокет не останется открытым. Это значение устанавливается, если функция 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)

См. также раздел

Корректное завершение работы, параметры задержки и закрытие сокета

closesocket

getsockopt

setsockopt