SOL_SOCKET Socketoptionen

In den folgenden Tabellen werden SOL_SOCKET Socketoptionen beschrieben. Weitere Informationen zum Abrufen und Festlegen von Socketoptionen finden Sie auf den Referenzseiten der Funktionen getsockopt und setsockopt .

Um Protokolle aufzulisten und unterstützte Eigenschaften für jedes installierte Protokoll zu ermitteln, verwenden Sie die Funktion WSAEnumProtocols, WSCEnumProtocols oder WSCEnumProtocols32 .

Einige Socketoptionen erfordern mehr Erklärungen, als diese Tabellen vermitteln können. solche Optionen enthalten Links zu zusätzlichen Seiten.

Hinweis

Alle SOL_SOCKET Socketoptionen gelten gleichermaßen für IPv4 und IPv6 (mit Ausnahme von SO_BROADCAST, da Broadcast nicht in IPv6 implementiert ist).

 

SOL_SOCKET Socketoptionen

Option Herunterladen Set Optval-Typ BESCHREIBUNG
PVD_CONFIG ja ja char [] Ein undurchsichtiges Datenstrukturobjekt, das Konfigurationsinformationen für den Dienstanbieter enthält. Diese Option ist von der Implementierung abhängig.
SO_ACCEPTCONN ja DWORD (boolescher Wert) Gibt zurück, ob sich ein Socket im Lauschmodus befindet. Diese Option ist nur für verbindungsorientierte Protokolle gültig.
SO_BROADCAST ja ja DWORD (boolescher Wert) Konfigurieren Sie einen Socket zum Senden von Broadcastdaten. Diese Option ist nur für Protokolle gültig, die Übertragung unterstützen (z. B. IPX und UDP).
SO_BSP_STATE ja CSADDR_INFO Gibt die lokale Adresse, den lokalen Port, die Remoteadresse, den Remoteport, den Sockettyp und das Protokoll zurück, die von einem Socket verwendet werden. Weitere Informationen finden Sie in der Referenz zu SO_BSP_STATE .
SO_CONDITIONAL_ACCEPT ja ja DWORD (boolescher Wert) Gibt an, ob eingehende Verbindungen von der Anwendung und nicht vom Protokollstapel akzeptiert oder abgelehnt werden sollen. Weitere Informationen finden Sie in der Referenz zu SO_CONDITIONAL_ACCEPT .
SO_CONNDATA ja ja char [] Zusätzliche Daten, nicht im normalen Netzwerkdatenstrom, die mit Netzwerkanforderungen gesendet werden, um eine Verbindung herzustellen. Diese Option wird von Legacyprotokollen wie DECNet, OSI TP4 und anderen verwendet. Diese Option wird vom TCP/IP-Protokoll in Windows nicht unterstützt.
SO_CONNDATALEN ja DWORD Die Länge zusätzlicher Daten in Bytes, nicht im normalen Netzwerkdatenstrom, der mit Netzwerkanforderungen gesendet wird, um eine Verbindung herzustellen. Diese Option wird von Legacyprotokollen wie DECNet, OSI TP4 und anderen verwendet. Diese Option wird vom TCP/IP-Protokoll in Windows nicht unterstützt.
SO_CONNECT_TIME ja DWORD Gibt die Anzahl der Sekunden zurück, die ein Socket verbunden wurde. Diese Option ist nur für verbindungsorientierte Protokolle gültig.
SO_CONNOPT ja ja char [] Zusätzliche Verbindungsoptionsdaten( nicht im normalen Netzwerkdatenstrom), die mit Netzwerkanforderungen gesendet werden, um eine Verbindung herzustellen. Diese Option wird von Legacyprotokollen wie DECNet, OSI TP4 und anderen verwendet. Diese Option wird vom TCP/IP-Protokoll in Windows nicht unterstützt.
SO_CONNOPTLEN ja DWORD Die Länge der Verbindungsoptionsdaten in Bytes, nicht im normalen Netzwerkdatenstrom, der mit Netzwerkanforderungen zum Herstellen einer Verbindung gesendet wird. Diese Option wird von Legacyprotokollen wie DECNet, OSI TP4 und anderen verwendet. Diese Option wird vom TCP/IP-Protokoll in Windows nicht unterstützt.
SO_DISCDATA ja ja char [] Zusätzliche Daten, nicht im normalen Netzwerkdatenstrom, die mit Netzwerkanforderungen gesendet werden, um eine Verbindung zu trennen. Diese Option wird von Legacyprotokollen wie DECNet, OSI TP4 und anderen verwendet. Diese Option wird vom TCP/IP-Protokoll in Windows nicht unterstützt.
SO_DISCDATALEN ja DWORD Die Länge zusätzlicher Daten in Bytes, die nicht im normalen Netzwerkdatenstrom enthalten sind, der mit Netzwerkanforderungen gesendet wird, um eine Verbindung zu trennen. Diese Option wird von Legacyprotokollen wie DECNet, OSI TP4 und anderen verwendet. Diese Option wird vom TCP/IP-Protokoll in Windows nicht unterstützt.
SO_DISCOPT ja ja char [] Zusätzliche Daten zum Trennen der Verbindung( nicht im normalen Netzwerkdatenstrom), die mit Netzwerkanforderungen gesendet werden, um eine Verbindung zu trennen. Diese Option wird von Legacyprotokollen wie DECNet, OSI TP4 und anderen verwendet. Diese Option wird vom TCP/IP-Protokoll in Windows nicht unterstützt.
SO_DISCOPTLEN ja DWORD Die Länge der zusätzlichen Verbindungsoptionsdaten in Byte und nicht im normalen Netzwerkdatenstrom, der mit Netzwerkanforderungen gesendet wird, um eine Verbindung zu trennen. Diese Option wird von Legacyprotokollen wie DECNet, OSI TP4 und anderen verwendet. Diese Option wird vom TCP/IP-Protokoll in Windows nicht unterstützt.
SO_DEBUG ja ja DWORD (boolesch) Aktivieren Sie die Debugausgabe. Microsoft-Anbieter geben derzeit keine Debuginformationen aus.
SO_DONTLINGER ja ja DWORD (boolesch) Gibt den Zustand des l_onoff Members der einem Socket zugeordneten Nachbaustruktur an. Wenn dieser Member nichtzero ist, bleibt ein Socket nach einem Aufruf der Closesocket-Funktion für eine bestimmte Zeit geöffnet, um das Senden von Daten in der Warteschlange zu ermöglichen. Diese Option gilt nur für zuverlässige, verbindungsorientierte Protokolle.
SO_DONTROUTE ja ja DWORD (boolesch) Gibt an, dass ausgehende Daten an eine Beliebige Schnittstelle gesendet werden sollen, an die der Socket gebunden ist, und nicht an einer anderen Schnittstelle. Diese Option ist nur gültig für nachrichtenorientierte Protokolle. Microsoft-Anbieter ignorieren diese Option im Hintergrund und konsultieren immer die Routingtabelle, um die entsprechende ausgehende Schnittstelle zu finden.
SO_ERROR ja DWORD Gibt den letzten Fehlercode für diesen Socket zurück. Dieser Fehlercode pro Socket wird nicht immer sofort festgelegt.
SO_EXCLUSIVEADDRUSE ja ja DWORD (boolesch) Verhindert, dass ein anderer Socket an dieselbe Adresse und denselben Port gebunden wird. Diese Option muss vor dem Aufrufen der Bindungsfunktion festgelegt werden. Weitere Informationen finden Sie in der referenz SO_EXCLUSIVEADDRUSE .
SO_GROUP_ID ja unsigned int Diese Socketoption ist reserviert und sollte nicht verwendet werden.
SO_GROUP_PRIORITY ja ja INT Diese Socketoption ist reserviert und sollte nicht verwendet werden.
SO_KEEPALIVE ja ja DWORD (boolesch) Aktiviert Keep-Alive für eine Socketverbindung. Gilt nur für Protokolle, die den Begriff keep-alive (verbindungsorientierte Protokolle) unterstützen. Bei TCP beträgt das standardmäßige Keep-Alive-Timeout 2 Stunden und das Keep-Alive-Intervall eine Sekunde. Die Standardanzahl von Keep-Alive-Tests variiert abhängig von der Windows-Version. Weitere Informationen finden Sie in der referenz SO_KEEPALIVE .
SO_LINGER ja ja Struktur verharren Gibt den Zustand der einem Socket zugeordneten Nachhaltenstruktur an. Wenn das l_onoff Member der linger-Struktur nonzero ist, bleibt ein Socket nach einem Aufruf der Closesocket-Funktion für eine bestimmte Zeit geöffnet, um das Senden von Daten in die Warteschlange zu ermöglichen. Die Dauer des Öffnens in Sekunden wird im l_linger Member der linger-Struktur angegeben. Diese Option gilt nur für zuverlässige, verbindungsorientierte Protokolle.
SO_MAX_MSG_SIZE ja DWORD Gibt die maximale Größe ausgehender Nachrichten für nachrichtenorientierte Sockets zurück, die vom Protokoll unterstützt werden. Hat keine Bedeutung für streamorientierte Sockets.
SO_MAXDG ja DWORD Gibt die maximale Größe (in Bytes) für ausgehende Datagramme zurück, die vom Protokoll unterstützt werden. Diese Socketoption hat keine Bedeutung für streamorientierte Sockets.
SO_MAXPATHDG ja DWORD Gibt die maximale Größe (in Bytes) für ausgehende Datagramme zurück, die vom Protokoll an eine bestimmte Zieladresse unterstützt werden. Diese Socketoption hat keine Bedeutung für streamorientierte Sockets. Microsoft-Anbieter können dies als SO_MAXDG behandeln.
SO_OOBINLINE ja ja DWORD (boolesch) Gibt an, dass out-of-bound-Daten inline mit regulären Daten zurückgegeben werden sollen. Diese Option gilt nur für verbindungsorientierte Protokolle, die Out-of-Band-Daten unterstützen.
SO_OPENTYPE ja ja DWORD Nach dem Festlegen wirkt sich darauf aus, ob nachfolgende Sockets, die erstellt werden, nicht überlappen. Die möglichen Werte für diese Option sind SO_SYNCHRONOUS_ALERT und SO_SYNCHRONOUS_NONALERT. Diese Option sollte nicht verwendet werden. Verwenden Sie stattdessen die WSASocket-Funktion , und lassen Sie das WSA_FLAG_OVERLAPPED Bit im dwFlags-Parameter deaktiviert.
SO_PAUSE_ACCEPT ja ja DWORD(boolean) Verwenden Sie diese Option zum Überwachen von Sockets. Wenn die Option festgelegt ist, reagiert der Socket auf alle eingehenden Verbindungen mit einer RST, anstatt sie zu akzeptieren.
SO_PORT_SCALABILITY ja ja DWORD (boolesch) Ermöglicht die Skalierbarkeit des lokalen Ports für einen Socket, indem die Portzuordnung durch mehrfaches Zuweisen von Platzhalterports für verschiedene lokale Adressportpaare auf einem lokalen Computer maximiert werden kann. Auf Plattformen, auf denen beide Optionen verfügbar sind, bevorzugen Sie SO_REUSE_UNICASTPORT anstelle dieser Option. Weitere Informationen finden Sie in der Referenz zu SO_PORT_SCALABILITY .
SO_PROTOCOL_INFO ja WSAPROTOCOL_INFO Diese Option wird für die Socketoption SO_PROTOCOL_INFOW definiert, wenn das UNICODE-Makro definiert ist. Wenn das UNICODE-Makro nicht definiert ist, wird diese Option für die Socketoption SO_PROTOCOL_INFOA definiert.
SO_PROTOCOL_INFOA ja WSAPROTOCOL_INFOA Gibt die WSAPROTOCOL_INFOA-Struktur für den angegebenen Socket zurück.
SO_PROTOCOL_INFOW ja WSAPROTOCOL_INFOW Gibt die WSAPROTOCOL_INFOW-Struktur für den angegebenen Socket zurück.
SO_RANDOMIZE_PORT ja ja DWORD(boolescher Wert) Diese Option sollte für einen ungebundenen Socket festgelegt werden. Wenn SO_RANDOMIZE_PORT festgelegt ist und ein kurzlebiger Port für den Socket ausgewählt wird, wird eine zufällige Portnummer gebunden. Die automatische Wiederverwendung von Ports (ports, die mit SO_REUSE_UNICASTPORT ausgewählt wurden) zufällig den zurückgegebenen Port. Wenn also eine Anwendung SO_REUSE_UNICASTPORT festlegt und dann versucht, SO_RANDOMIZE_PORT festzulegen, schlägt der zweite setockopt-Aufruf fehl.
SO_RCVBUF ja ja DWORD Der insgesamt reservierte Pufferspeicherplatz pro Socket für Empfänge. Dies steht in keinem Zusammenhang mit SO_MAX_MSG_SIZE und entspricht nicht unbedingt der Größe des TCP-Empfangsfensters.
SO_RCVLOWAT ja ja DWORD Eine Socketoption von BSD UNIX aus Gründen der Abwärtskompatibilität. Mit dieser Option wird die Mindestanzahl von Bytes festgelegt, die für Socketeingabevorgänge verarbeitet werden sollen. Diese Option wird vom Windows TCP/IP-Anbieter nicht unterstützt. Wenn diese Option unter Windows Vista und höher verwendet wird, schlagen die Funktionen getsockopt und setsockopt mit WSAEINVAL fehl. In früheren Versionen von Windows schlagen diese Funktionen mit WSAENOPROTOOPT fehl.
SO_RCVTIMEO ja ja DWORD Das Timeout in Millisekunden für das Blockieren von Empfangsanrufen. Der Standardwert für diese Option ist 0. Dies bedeutet, dass bei einem Empfangsvorgang kein Timeout auftritt. Wenn bei einem blockierenden Empfangsanruf ein Timeout auftritt, befindet sich die Verbindung in einem unbestimmten Zustand und sollte geschlossen werden.
Wenn der Socket mit der WSASocket-Funktion erstellt wird, muss für den dwFlags-Parameter das attribut WSA_FLAG_OVERLAPPED festgelegt sein, damit das Timeout ordnungsgemäß funktioniert. Andernfalls wird das Timeout nie wirksam.
SO_REUSEADDR ja ja DWORD (boolescher Wert) Ermöglicht es einem Socket, eine Bindung an eine Adresse und einen Port zu binden, die bereits verwendet werden. Die Option SO_EXCLUSIVEADDRUSE kann dies verhindern.
SO_REUSE_UNICASTPORT ja ja DWORD (boolescher Wert) Wenn festgelegt, lassen Sie die Wiederverwendung kurzlebiger Ports für Winsock-API-Verbindungsfunktionen zu, die eine explizite Bindung erfordern, z. B. ConnectEx. Beachten Sie, dass für Verbindungsfunktionen mit impliziter Bindung (z. B. herstellen ohne explizite Bindung) diese Option standardmäßig festgelegt ist. Verwenden Sie diese Option anstelle von SO_PORT_SCALABILITY auf Plattformen, auf denen beide verfügbar sind.
SO_REUSE_MULTICASTPORT ja DWORD Wenn sie für einen Socket festgelegt ist, gibt diese Option an, dass der Socket niemals zum Empfangen von Unicastpaketen verwendet wird und folglich sein Port für andere Nur-Multicastanwendungen freigegeben werden kann. Wenn Sie den Wert auf 1 festlegen, wird multicastdatenverkehr am Port immer gemeinsam verwendet. Wenn Sie den Wert auf 0 (Standard) festlegen, wird dieses Verhalten deaktiviert.
SO_SNDBUF ja ja DWORD Der insgesamt reservierte Pufferspeicher pro Socket für Sendevorgänge. Dies steht in keinem Zusammenhang mit SO_MAX_MSG_SIZE und entspricht nicht unbedingt der Größe eines TCP-Sendefensters.
SO_SNDLOWAT ja ja DWORD Eine Socketoption von BSD UNIX aus Gründen der Abwärtskompatibilität. Mit dieser Option wird die Mindestanzahl von Bytes festgelegt, die für Socketausgabevorgänge verarbeitet werden sollen. Diese Option wird vom Windows TCP/IP-Anbieter nicht unterstützt. Wenn diese Option unter Windows Vista und höher verwendet wird, schlagen die Funktionen getsockopt und setsockopt mit WSAEINVAL fehl. In früheren Versionen von Windows schlagen diese Funktionen mit WSAENOPROTOOPT fehl.
SO_SNDTIMEO ja ja DWORD Das Timeout in Millisekunden für das Blockieren von Sendeanrufen. Der Standardwert für diese Option ist 0(0), was angibt, dass bei einem Sendevorgang kein Timeout auftritt. Wenn bei einem blockierenden Sendeanruf ein Timeout besteht, befindet sich die Verbindung in einem unbestimmten Zustand und sollte geschlossen werden.
Wenn der Socket mit der WSASocket-Funktion erstellt wird, muss für den dwFlags-Parameter das attribut WSA_FLAG_OVERLAPPED festgelegt sein, damit das Timeout ordnungsgemäß funktioniert. Andernfalls wird das Timeout nie wirksam.
SO_TYPE ja DWORD Gibt den Sockettyp für den angegebenen Socket zurück (z. B. SOCK_STREAM oder SOCK_DGRAM).
SO_UPDATE_ACCEPT_CONTEXT ja DWORD (boolescher Wert) Diese Option wird mit der AcceptEx-Funktion verwendet. Mit dieser Option werden die Eigenschaften des Sockets aktualisiert, die vom lauschenden Socket geerbt werden. Diese Option sollte festgelegt werden, wenn die Funktionen getpeername, getsockname, getsockopt oder setsockopt für den akzeptierten Socket verwendet werden sollen.
SO_UPDATE_CONNECT_CONTEXT ja DWORD (boolescher Wert) Diese Option wird mit den Funktionen ConnectEx, WSAConnectByList und WSAConnectByName verwendet. Mit dieser Option werden die Eigenschaften des Sockets aktualisiert, nachdem die Verbindung hergestellt wurde. Diese Option sollte festgelegt werden, wenn die Funktionen getpeername, getsockname, getsockopt, setsockopt oder shutdown für den verbundenen Socket verwendet werden sollen.
SO_USELOOPBACK ja ja DWORD (boolesch) Verwenden Sie die lokale Loopbackadresse, wenn Sie Daten aus diesem Socket senden. Diese Option sollte nur verwendet werden, wenn alle gesendeten Daten auch lokal empfangen werden. Diese Option wird vom Windows TCP/IP-Anbieter nicht unterstützt. Wenn diese Option unter Windows Vista und höher verwendet wird, schlagen die Funktionen getockopt und setsockopt mit WSAEINVAL fehl. In früheren Versionen von Windows schlagen diese Funktionen mit WSAENOPROTOOPT fehl.

Windows-Unterstützung für SOL_SOCKET-Optionen

Option Windows 10 Windows 7 Windows Server 2008 Windows Vista Windows Server 2003 Windows XP Windows 2000 Windows NT4 Windows 9x/ME
PVD_CONFIG
SO_ACCEPTCONN x x x x x x x x x
SO_BROADCAST x x x x x x x x x
SO_BSP_STATE x x x x
SO_CONDITIONAL_ACCEPT x x x x x x x
SO_CONNDATA x x x x x x x x
SO_CONNDATALEN x x x x x x x x
SO_CONNECT_TIME x x x x x x x x x
SO_CONNOPT x x x x x x x x
SO_CONNOPTLEN x x x x x x x x
SO_DISCDATA x x x x x x x x
SO_DISCDATALEN x x x x x x x x
SO_DISCOPT x x x x x x x x
SO_DISCOPTLEN x x x x x x x x
SO_DEBUG x x x x x x x x x
SO_DONTLINGER x x x x x x x x x
SO_DONTROUTE x x x x x x x x x
SO_ERROR x x x x x x x x x
SO_EXCLUSIVEADDRUSE x x x x x x x x SP4+
SO_GROUP_ID x x x x
SO_GROUP_PRIORITY x x x x
SO_KEEPALIVE x x x x x x x x x
SO_LINGER x x x x x x x x x
SO_MAX_MSG_SIZE x x x x x x x x x
SO_MAXDG x x x x x x x
SO_MAXPATHDG x x x x x x x
SO_OOBINLINE x x x x x x x x x
SO_OPENTYPE x x x x x x x x x
SO_PORT_SCALABILITY x x x
SO_PROTECT x
SO_PROTOCOL_INFO x x x x x x x x x
SO_PROTOCOL_INFOA x x x x x x x x x
SO_PROTOCOL_INFOW x x x x x x x x x
SO_RCVBUF x x x x x x x x x
SO_RCVLOWAT
SO_RCVTIMEO x x x x x x x x x
SO_RANDOMIZE_PORT x x x x
SO_REUSEADDR x x x x x x x x x
SO_REUSE_UNICASTPORT x
SO_REUSE_MULTICASTPORT x
SO_SNDBUF x x x x x x x x x
SO_SNDLOWAT
SO_SNDTIMEO x x x x x x x x x
SO_TYPE x x x x x x x x x
SO_UPDATE_ACCEPT_CONTEXT x x x x x x x x
SO_UPDATE_CONNECT_CONTEXT x x x x x x
SO_USELOOPBACK

Bemerkungen

Die SOL_SOCKET Socketoptionen sind in mehreren Winsock-Headerdateien definiert:

  • Winsock2.h
  • Mswsock.h
  • Ws2def.h

Im Microsoft Windows Software Development Kit (SDK), das für Windows Vista und höher veröffentlicht wurde, wurde die organization von Headerdateien geändert, und SOL_SOCKET Ebene wird in der Ws2def.h-Headerdatei definiert, die automatisch in der Winsock2.h-Headerdatei enthalten ist. Einige der SOL_SOCKET Socketoptionen sind in den Headerdateien Winsock2.h und Mswsock.h definiert. Die verbleibenden SOL_SOCKET Socketoptionen sind in der Ws2def.h-Headerdatei definiert, die automatisch in der Winsock2.h-Headerdatei enthalten ist. Ws2def.h sollte niemals direkt verwendet werden.

Im Platform Software Development Kit (SDK), das für Windows Server 2003 und Windows XP veröffentlicht wurde, wird die SOL_SOCKET Ebene in der Winsock2.h-Headerdatei definiert. Die SOL_SOCKET Socketoptionen sind in den Headerdateien Winsock2.h und Mswsock.h definiert.

Anforderungen

Anforderung Wert
Header
Winsock2.h;
mswsock.h;
Ws2def.h (einschließlich Winsock2.h)