Estructura LINGER (winsock2.h)

La estructura persistente mantiene información sobre un socket específico que especifica cómo debe comportarse ese socket cuando se ponen en cola los datos que se van a enviar y se llama a la función closesocket en el socket.

Sintaxis

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

Miembros

l_onoff

Tipo: u_short

Especifica si un socket debe permanecer abierto durante un período de tiempo especificado después de una llamada de función closesocket para permitir que se envíen los datos en cola. Este miembro puede tener uno de los siguientes valores.

Valor Significado
0
El socket no permanecerá abierto. Este es el valor establecido si se llama a la función setsockopt con el parámetro optname establecido en SO_DONTLINGER y el parámetro optval es cero.

Este valor también se establece si se llama a la función setsockopt con el parámetro optname establecido en SO_LINGER y la estructura persistente pasada en el parámetro optval tiene el miembro l_onoff establecido en 0.

Distinto
El socket permanecerá abierto durante un período de tiempo especificado. Este valor se establece si se llama a la función setsockopt con el parámetro optname establecido en SO_DONTLINGER y el parámetro optval es distinto de cero.

Este valor también se establece si se llama a la función setsockopt con el parámetro optname establecido en SO_LINGER y la estructura persistente pasada en el parámetro optval tiene el miembro l_onoff establecido en un valor distinto de cero.

l_linger

Tipo: u_short

Tiempo persistente en segundos. Este miembro especifica cuánto tiempo debe permanecer abierto después de una llamada de función closesocket para permitir que se envíen datos en cola. Este miembro solo es aplicable si el l_onoff miembro de la estructura persistente se establece en un valor distinto de cero.

Este valor se establece si se llama a la función setsockopt con el parámetro optname establecido en SO_LINGER. El parámetro optval pasado a la función setsockopt debe contener una estructura persistente que se copia en la estructura persistente interna mantenida para el socket.

Comentarios

El miembro l_onoff de la estructura persistente determina si un socket debe permanecer abierto durante un período de tiempo especificado después de una llamada de función closesocket para permitir que se envíen los datos en cola. Algo confuso es que este miembro se puede modificar de dos maneras:

  • Llame a la función setsockopt con el parámetro optname establecido en SO_DONTLINGER. El parámetro optval determina cómo se modifica el miembro de l_onoff .
  • Llame a la función setsockopt con el parámetro optname establecido en SO_LINGER. El parámetro optval especifica cómo se modifican los miembros l_onoff y l_linger .

El l_linger miembro de la estructura persistente determina la cantidad de tiempo, en segundos, que un socket debe permanecer abierto. Este miembro solo es aplicable si el l_onoff miembro de la estructura persistente es distinto de cero.

Para permitir que un socket permanezca abierto, una aplicación debe establecer el miembro l_onoff en un valor distinto de cero y establecer el miembro l_linger en el tiempo de espera deseado en segundos. Para deshabilitar un socket del resto abierto, una aplicación solo debe establecer el miembro l_onoff de la estructura persistente en cero.

Si una aplicación llama a la función setsockopt con el parámetro optname establecido en SO_DONTLINGER para establecer el miembro l_onoff en un valor distinto de cero, no se especifica el valor del miembro l_linger . En este caso, el tiempo de espera usado depende de la implementación. Si se ha establecido un tiempo de espera anterior para un socket (habilitando SO_LINGER), el proveedor de servicios debe restablecer este valor de tiempo de espera.

Tenga en cuenta que no se recomienda habilitar un tiempo de espera distinto de cero en un socket sin bloqueo.

Se puede llamar a la función getockopt con el parámetro optname establecido en SO_LINGER para recuperar el valor actual de la estructura persistente asociada a un socket.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Encabezado winsock2.h (incluya Winsock2.h)

Consulte también

Cierre correcto, opciones persistentes y cierre de socket

closesocket

getsockopt

setsockopt