Condividi tramite


Struttura LINGER (winsock2.h)

La struttura persistente gestisce informazioni su un socket specifico che specifica il comportamento del socket quando i dati vengono accodati per l'invio e la funzione closesocket viene chiamata sul socket.

Sintassi

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

Members

l_onoff

Tipo: u_short

Specifica se un socket deve rimanere aperto per un periodo di tempo specificato dopo una chiamata di funzione closesocket per abilitare l'invio dei dati in coda. Questo membro può avere uno dei valori seguenti.

Valore Significato
0
Il socket non rimarrà aperto. Si tratta del valore impostato se la funzione setockopt viene chiamata con il parametro optname impostato su SO_DONTLINGER e il parametro optval è zero.

Questo valore viene impostato anche se la funzione setockopt viene chiamata con il parametro optname impostato su SO_LINGERe la struttura di linger passata nel parametro optval ha il membro l_onoff impostato su 0.

non zero
Il socket rimarrà aperto per un periodo di tempo specificato. Questo valore viene impostato se la funzione setockopt viene chiamata con il parametro optname impostato su SO_DONTLINGER e il parametro optval è diverso da zero.

Questo valore viene impostato anche se la funzione setockopt viene chiamata con il parametro optname impostato su SO_LINGER e la struttura di linger passata nel parametro optval ha il membro l_onoff impostato su un valore diverso da zero.

l_linger

Tipo: u_short

Tempo persistente in secondi. Questo membro specifica quanto tempo rimanere aperto dopo una chiamata di funzione closesocket per abilitare l'invio dei dati in coda. Questo membro è applicabile solo se il membro l_onoffdella struttura di linger è impostato su un valore diverso da zero.

Questo valore viene impostato se la funzione setockopt viene chiamata con il parametro optname impostato su SO_LINGER. Il parametro optval passato alla funzione setockopt deve contenere una struttura di ritardo copiata nella struttura interna del ritardo gestita per il socket.

Commenti

Il l_onoff membro della struttura linger determina se un socket deve rimanere aperto per un periodo di tempo specificato dopo una chiamata di funzione closesocket per abilitare l'invio dei dati in coda. Un po 'confusione è che questo membro può essere modificato in due modi:

  • Chiamare la funzione setockopt con il parametro optname impostato su SO_DONTLINGER. Il parametro optval determina la modifica del membro l_onoff .
  • Chiamare la funzione setockopt con il parametro optname impostato su SO_LINGER. Il parametro optval specifica come vengono modificati sia i membri l_onoff che l_linger .

Il l_linger membro della struttura persistente determina la quantità di tempo, in secondi, deve rimanere aperto un socket. Questo membro è applicabile solo se il membro l_onoffdella struttura persistente è diverso da zero.

Per consentire a un socket di rimanere aperto, un'applicazione deve impostare il membro l_onoff su un valore diverso da zero e impostare il membro l_linger sul timeout desiderato in secondi. Per disabilitare un socket dall'apertura rimanente, un'applicazione deve impostare solo il membro l_onoff della struttura persistente su zero.

Se un'applicazione chiama la funzione setockopt con il parametro optname impostato su SO_DONTLINGER per impostare il membro l_onoff su un valore diverso da zero, il valore per il membro l_linger non è specificato. In questo caso, il timeout usato dipende dall'implementazione. Se è stato stabilito un timeout precedente per un socket (abilitando SO_LINGER), questo valore di timeout deve essere ripristinato dal provider di servizi.

Si noti che l'abilitazione di un timeout diverso da zero in un socket non sbloccante non è consigliata.

La funzione getsockopt può essere chiamata con il parametro optname impostato su SO_LINGER per recuperare il valore corrente della struttura di linger associata a un socket.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Intestazione winsock2.h (include Winsock2.h)

Vedi anche

Arresto tolleranza, opzioni di linger e chiusura socket

closesocket

getsockopt

Setsockopt