LINGER-Struktur (winsock.h)

Die linger-Struktur verwaltet Informationen zu einem bestimmten Socket, die angibt, wie sich dieser Socket verhalten soll, wenn Daten gesendet werden sollen und die Closesocket-Funktion im Socket aufgerufen wird.

Syntax

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

Member

l_onoff

Typ: u_short

Gibt an, ob ein Socket nach einem Aufruf der Closesocket-Funktion für eine bestimmte Zeit geöffnet bleiben soll, um das Senden von Daten in die Warteschlange zu ermöglichen. Dieser Member kann über einen der folgenden Werte verfügen.

Wert Bedeutung
0
Der Socket bleibt nicht geöffnet. Dies ist der Wert, der festgelegt wird, wenn die setockopt-Funktion aufgerufen wird, wobei der optname-Parameter auf SO_DONTLINGER festgelegt ist und der optval-Parameter 0 ist.

Dieser Wert wird auch festgelegt, wenn die setockopt-Funktion aufgerufen wird, wobei der optname-Parameter auf SO_LINGER festgelegt ist und die im optval-Parameter übergebene linger-Struktur den l_onoff Member auf 0 festgelegt hat.

Nonzero
Der Socket bleibt für eine bestimmte Zeit geöffnet. Dieser Wert wird festgelegt, wenn die setockopt-Funktion aufgerufen wird, wobei der optname-Parameter auf SO_DONTLINGER festgelegt ist und der optval-Parameter nonzero ist.

Dieser Wert wird auch festgelegt, wenn die setockopt-Funktion aufgerufen wird, wobei der optname-Parameter auf SO_LINGER festgelegt ist und die im optval-Parameter übergebene linger-Struktur den l_onoff Member auf einen Nonzero-Wert festgelegt hat.

l_linger

Typ: u_short

Die Verweilzeit in Sekunden. Dieses Element gibt an, wie lange nach einem Aufruf der Closesocket-Funktion geöffnet bleiben soll, um das Senden von Daten in der Warteschlange zu ermöglichen. Dieses Element ist nur anwendbar, wenn das l_onoff Member der linger-Struktur auf einen Wert ohne Zero festgelegt ist.

Dieser Wert wird festgelegt, wenn die setockopt-Funktion aufgerufen wird, wobei der optname-Parameter auf SO_LINGER festgelegt ist. Der optval-Parameter , der an die setockopt-Funktion übergeben wird, muss eine linger-Struktur enthalten, die in die interne linger-Struktur kopiert wird, die für den Socket verwaltet wird.

Hinweise

Der l_onoff Member der linger-Struktur bestimmt, ob ein Socket nach einem Aufruf der Closesocket-Funktion für eine bestimmte Zeit geöffnet bleiben soll, um das Senden von Daten in der Warteschlange zu ermöglichen. Etwas verwirrend ist, dass dieses Element auf zwei Arten geändert werden kann:

  • Rufen Sie die setockopt-Funktion auf, wobei der optname-Parameter auf SO_DONTLINGER festgelegt ist. Der optval-Parameter bestimmt, wie der l_onoff Member geändert wird.
  • Rufen Sie die setockopt-Funktion auf, wobei der optname-Parameter auf SO_LINGER festgelegt ist. Der optval-Parameter gibt an, wie sowohl die l_onoff - als auch l_linger-Member geändert werden.

Das l_linger Member der linger-Struktur bestimmt, wie lange ein Socket in Sekunden geöffnet bleiben soll. Dieses Element ist nur anwendbar, wenn das l_onoff Member der linger-Struktur nichtzero ist.

Damit ein Socket geöffnet bleibt, sollte eine Anwendung den l_onoff-Member auf einen Nichtzero-Wert festlegen und den l_linger-Member auf das gewünschte Timeout in Sekunden festlegen. Um zu deaktivieren, dass ein Socket geöffnet bleibt, muss eine Anwendung nur den l_onoff Member der linger-Struktur auf 0 festlegen.

Wenn eine Anwendung die setockopt-Funktion aufruft , wobei der optname-Parameter auf SO_DONTLINGER festgelegt ist, um das l_onoff-Member auf einen nonzero-Wert festzulegen, wird der Wert für das l_linger-Member nicht angegeben. In diesem Fall ist das verwendete Timeout implementierungsabhängig. Wenn ein früheres Timeout für einen Socket festgelegt wurde (durch Aktivieren SO_LINGER), sollte dieser Timeoutwert vom Dienstanbieter wiederhergestellt werden.

Beachten Sie, dass das Aktivieren eines nichtzero-Timeouts für einen nicht blockierenden Socket nicht empfohlen wird.

Die getockopt-Funktion kann aufgerufen werden, wobei der optname-Parameter auf SO_LINGER festgelegt ist, um den aktuellen Wert der einem Socket zugeordneten linger-Struktur abzurufen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Kopfzeile winsock.h (einschließlich Winsock2.h)

Weitere Informationen

Graceful Shutdown, Linger-Optionen und Socket Closure

closesocket

getsockopt

setsockopt