Condividi tramite


Struttura LINGER (winsock.h)

La struttura linger mantiene 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 consentire l'invio dei dati in coda. Questo membro può avere uno dei valori seguenti.

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

Questo valore viene impostato anche se la funzione setsockopt viene chiamata con il parametro optname impostato su SO_LINGER e la struttura persistente passata nel parametro optval ha il membro l_onoff impostato su 0.

diverso da zero
Il socket rimarrà aperto per un periodo di tempo specificato. Questo valore viene impostato se la funzione setsockopt 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 setsockopt viene chiamata con il parametro optname impostato su SO_LINGER e la struttura persistente passata nel parametro optval ha il membro l_onoff impostato su un valore diverso da zero.

l_linger

Tipo: u_short

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

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

Commenti

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

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

Il l_linger membro della struttura del ritardo determina la quantità di tempo, in secondi, deve rimanere aperta un socket. Questo membro è applicabile solo se il membro l_onoff della 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 solo impostare il membro l_onoff della struttura persistente su zero.

Se un'applicazione chiama la funzione setsockopt 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 viene 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 non è consigliabile abilitare un timeout diverso da zero in un socket non bloccante.

La funzione getsockopt può essere chiamata con il parametro optname impostato su SO_LINGER per recuperare il valore corrente della struttura persistente 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 winsock.h (include Winsock2.h)

Vedi anche

Arresto normale, opzioni Linger e chiusura socket

closesocket

getsockopt

Setsockopt