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 getsockopt- und setsockopt-Funktion.

Verwenden Sie die Funktion WSAEnumProtocols, WSCEnumProtocols oder WSCEnumProtocols32, um Protokolle auflisten und unterstützte Eigenschaften für jedes installierte Protokoll zu ermitteln.

Einige Socketoptionen erfordern mehr Erläuterungen, als diese Tabellen vermitteln können; solche Optionen enthalten Links zu weiteren Seiten.

Note

Alle SOL_SOCKET Socketoptionen gelten gleichermaßen für IPv4 und IPv6 (außer SO_BROADCAST, da Die Übertragung nicht in IPv6 implementiert ist).

 

SOL_SOCKET Socketoptionen

Auswahl Get Festlegen Optval-Typ Description
PVD_CONFIG ja ja zeichen [] Ein undurchsichtiges Datenstrukturobjekt, das Konfigurationsinformationen für den Dienstanbieter enthält. Diese Option ist von der Implementierung abhängig.
SO_ACCEPTCONN ja DWORD (boolean) Gibt zurück, ob sich ein Socket im Überwachungsmodus befindet. Diese Option ist nur für verbindungsorientierte Protokolle gültig.
SO_BROADCAST ja ja DWORD (boolean) Konfigurieren Sie einen Socket zum Senden von Übertragungsdaten. Diese Option ist nur gültig für Protokolle, die übertragungen 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, das von einem Socket verwendet wird. Weitere Informationen finden Sie in der SO_BSP_STATE Referenz.
SO_CONDITIONAL_ACCEPT ja ja DWORD (boolean) Gibt an, ob eingehende Verbindungen von der Anwendung akzeptiert oder abgelehnt werden sollen, nicht vom Protokollstapel. Weitere Informationen finden Sie in der SO_CONDITIONAL_ACCEPT Referenz.
SO_CONNDATA ja ja zeichen [] Zusätzliche Daten, nicht im normalen Netzwerkdatenstrom, der mit Netzwerkanforderungen gesendet wird, um eine Verbindung herzustellen. Diese Option wird von älteren Protokollen 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 von zusätzlichen Daten in Bytes, nicht im normalen Netzwerkdatenstrom, der mit Netzwerkanforderungen gesendet wird, um eine Verbindung herzustellen. Diese Option wird von älteren Protokollen 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, für die ein Socket verbunden wurde. Diese Option ist nur für verbindungsorientierte Protokolle gültig.
SO_CONNOPT ja ja zeichen [] Zusätzliche Verbindungsoptionsdaten, nicht im normalen Netzwerkdatenstrom, der mit Netzwerkanforderungen gesendet wird, um eine Verbindung herzustellen. Diese Option wird von älteren Protokollen 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 von Verbindungsoptionsdaten in Bytes, nicht im normalen Netzwerkdatenstrom, der mit Netzwerkanforderungen gesendet wird, um eine Verbindung herzustellen. Diese Option wird von älteren Protokollen wie DECNet, OSI TP4 und anderen verwendet. Diese Option wird vom TCP/IP-Protokoll in Windows nicht unterstützt.
SO_DISCDATA ja ja zeichen [] Zusätzliche Daten, nicht im normalen Netzwerkdatenstrom, der mit Netzwerkanforderungen gesendet wird, um eine Verbindung zu trennen. Diese Option wird von älteren Protokollen 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 von zusätzlichen Daten in Bytes, nicht im normalen Netzwerkdatenstrom, der mit Netzwerkanforderungen gesendet wird, um eine Verbindung zu trennen. Diese Option wird von älteren Protokollen wie DECNet, OSI TP4 und anderen verwendet. Diese Option wird vom TCP/IP-Protokoll in Windows nicht unterstützt.
SO_DISCOPT ja ja zeichen [] Zusätzliche Verbindungsoptionsdaten, nicht im normalen Netzwerkdatenstrom, der mit Netzwerkanforderungen gesendet wird, um eine Verbindung zu trennen. Diese Option wird von älteren Protokollen 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 von zusätzlichen Verbindungsoptionsdaten in Bytes, nicht im normalen Netzwerkdatenstrom, der mit Netzwerkanforderungen gesendet wird, um eine Verbindung zu trennen. Diese Option wird von älteren Protokollen wie DECNet, OSI TP4 und anderen verwendet. Diese Option wird vom TCP/IP-Protokoll in Windows nicht unterstützt.
SO_DEBUG ja ja DWORD (boolean) Aktivieren Sie die Debugausgabe. Microsoft-Anbieter geben derzeit keine Debuginformationen aus.
SO_DONTLINGER ja ja DWORD (boolean) Gibt den Status des l_onoff Members der linger-Struktur an, die einem Socket zugeordnet ist. Wenn dieses Element kein Zero ist, bleibt ein Socket nach einem Closesocket-Funktionsaufruf geöffnet, um das Senden von in die Warteschlange eingereihten Daten zu ermöglichen. Diese Option gilt nur für zuverlässige, verbindungsorientierte Protokolle.
SO_DONTROUTE ja ja DWORD (boolean) Gibt an, dass ausgehende Daten an eine beliebige Schnittstelle gesendet werden sollen, an die der Socket gebunden ist und nicht an eine andere Schnittstelle weitergeleitet wird. Diese Option ist nur für nachrichtenorientierte Protokolle gültig. Microsoft Anbieter diese Option im Hintergrund ignorieren und immer die Routingtabelle konsultieren, 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 (boolean) Verhindert, dass andere Sockets an dieselbe Adresse und denselben Port gebunden werden. Diese Option muss festgelegt werden, bevor die Bindungsfunktion aufgerufen wird. Weitere Informationen finden Sie in der SO_EXCLUSIVEADDRUSE Referenz.
SO_GROUP_ID ja unsigned int (nicht-negative Ganzzahl) 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 (boolean) Aktiviert Keep-Alive für eine Socketverbindung. Gilt nur für Protokolle, die das Konzept von Keep-Alive (verbindungsorientierte Protokolle) unterstützen. Bei TCP beträgt das Standardmäßige Keep-Alive-Timeout 2 Stunden, und das Keep-Alive-Intervall beträgt 1 Sekunde. Die Standardanzahl der Keep-Alive-Probe variiert je nach Version von Windows. Weitere Informationen finden Sie in der SO_KEEPALIVE Referenz.
SO_LINGER ja ja Struktur nach wie vor Gibt den Zustand der linger-Struktur an, die einem Socket zugeordnet ist. Wenn das l_onoff Element der linger-Struktur ungleich Null ist, bleibt ein Socket für eine bestimmte Zeitspanne geöffnet, nachdem ein Closesocket-Funktionsaufruf die Warteschlange gesendet werden kann. Die Zeitspanne in Sekunden, die geöffnet bleiben soll, wird im l_linger Element 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 datenstromorientierte 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 datenstromorientierte Sockets. Microsoft Anbieter können dies im Hintergrund als SO_MAXDG behandeln.
SO_OOBINLINE ja ja DWORD (boolean) Gibt an, dass out-of-bound-Daten in Zeile mit regulären Daten zurückgegeben werden sollen. Diese Option ist nur für verbindungsorientierte Protokolle gültig, die Out-of-Band-Daten unterstützen.
SO_OPENTYPE ja ja DWORD Nach dem Festlegen wirkt sich darauf aus, ob nachfolgende erstellte Sockets nicht überlappend sind. 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 für Überwachungssockets. Wenn die Option festgelegt ist, reagiert der Socket auf alle eingehenden Verbindungen mit einem RST, anstatt sie zu akzeptieren.
SO_PORT_SCALABILITY ja ja DWORD (boolean) Ermöglicht die skalierbarkeit des lokalen Ports für einen Socket, indem die Portzuordnung maximiert werden kann, indem Platzhalterports mehrmals für verschiedene lokale Adressportpaare auf einem lokalen Computer zugewiesen werden. Bevorzugen Sie auf Plattformen, auf denen beide Optionen verfügbar sind, SO_REUSE_UNICASTPORT anstelle dieser Option. Weitere Informationen finden Sie in der SO_PORT_SCALABILITY Referenz.
SO_PROTOCOL_INFO ja WSAPROTOCOL_INFO Diese Option wird für die SO_PROTOCOL_INFOW Socketoption definiert, wenn das UNICODE-Makro definiert ist. Wenn das UNICODE-Makro nicht definiert ist, wird diese Option für die SO_PROTOCOL_INFOA Socketoption 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 (boolean) Diese Option sollte für einen ungebundenen Socket festgelegt werden. Wenn SO_RANDOMIZE_PORT festgelegt ist und ein kurzlebiger Port auf dem Socket ausgewählt wird, wird eine zufällige Portnummer gebunden. Automatisches Wiederverwenden von Ports (die mithilfe von SO_REUSE_UNICASTPORT ausgewählt wurden) zufällig den zurückgegebenen Port. Wenn eine Anwendung also SO_REUSE_UNICASTPORT festlegt und dann versucht, SO_RANDOMIZE_PORT festzulegen, schlägt der zweite Setockopt-Aufruf fehl.
SO_RCVBUF ja ja DWORD Der Gesamtspeicher pro Socketpuffer, der für Empfänge reserviert ist. Dies ist nicht mit SO_MAX_MSG_SIZE verbunden und entspricht nicht unbedingt der Größe des TCP-Empfangsfensters.
SO_RCVLOWAT ja ja DWORD Eine Socketoption von BSD UNIX ist aus Gründen der Abwärtskompatibilität enthalten. Diese Option legt die Mindestanzahl der Bytes fest, die für Socketeingabevorgänge verarbeitet werden sollen. Diese Option wird vom Windows TCP/IP-Anbieter nicht unterstützt. Wenn diese Option für 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 zum Blockieren von Empfangsanrufen. Die Standardeinstellung für diese Option ist Null, was angibt, dass ein Empfangsvorgang kein Timeout darstellt. Wenn beim Blockieren von Empfangsanrufen ein Zeitüberschreitungstermin besteht, befindet sich die Verbindung in einem unbestimmten Zustand und sollte geschlossen werden.
Wenn der Socket mithilfe der WSASocket-Funktion erstellt wird, muss der dwFlags-Parameter das attribut WSA_FLAG_OVERLAPPED aufweisen, damit das Timeout ordnungsgemäß funktioniert. Andernfalls wird das Timeout nie wirksam.
SO_REUSEADDR ja ja DWORD (boolean) Ermöglicht es einem Socket, eine Bindung an eine Adresse und einen bereits verwendeten Port zu erstellen. Die option SO_EXCLUSIVEADDRUSE kann dies verhindern.
SO_REUSE_UNICASTPORT ja ja DWORD (boolean) Wenn festgelegt, lassen Sie die ephemerale Portwiederverwendung für Winsock-API-Verbindungsfunktionen zu, die eine explizite Bindung erfordern, z. B. ConnectEx. Beachten Sie, dass Verbindungsfunktionen mit einer impliziten Bindung (z. B. "Verbinden ohne explizite Bindung") diese Option standardmäßig festgelegt haben. Verwenden Sie diese Option anstelle von SO_PORT_SCALABILITY auf Plattformen, auf denen beide verfügbar sind.
SO_REUSE_MULTICASTPORT ja DWORD Wenn diese Option für einen Socket festgelegt wird, gibt diese Option an, dass der Socket niemals verwendet wird, um Unicast-Pakete zu empfangen, und folglich kann der Port für andere Nur-Multicast-Anwendungen freigegeben werden. Durch Festlegen des Werts auf 1 wird die gemeinsame Nutzung von Multicastdatenverkehr am Port aktiviert. Durch Festlegen des Werts auf 0 (Standard) wird dieses Verhalten deaktiviert.
SO_SNDBUF ja ja DWORD Der gesamt für Sendesendungen reservierte Pufferspeicher pro Socket. Dies ist nicht mit SO_MAX_MSG_SIZE verbunden und entspricht nicht unbedingt der Größe eines TCP-Sendefensters.
SO_SNDLOWAT ja ja DWORD Eine Socketoption von BSD UNIX ist aus Gründen der Abwärtskompatibilität enthalten. Diese Option legt die Mindestanzahl der Bytes fest, die für Socketausgabevorgänge verarbeitet werden sollen. Diese Option wird vom Windows TCP/IP-Anbieter nicht unterstützt. Wenn diese Option für 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 zum Blockieren von Sendeanrufen. Die Standardeinstellung für diese Option ist Null, was angibt, dass ein Sendevorgang kein Timeout darstellt. Wenn eine Blockierung des Sendeanrufs zu einem Zeitüberschreitungstermin führt, befindet sich die Verbindung in einem unbestimmten Zustand und sollte geschlossen werden.
Wenn der Socket mithilfe der WSASocket-Funktion erstellt wird, muss der dwFlags-Parameter das attribut WSA_FLAG_OVERLAPPED aufweisen, 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 (boolean) Diese Option wird mit der AcceptEx-Funktion verwendet. Mit dieser Option werden die Eigenschaften des Sockets aktualisiert, die vom Überwachungssocket geerbt werden. Diese Option sollte festgelegt werden, wenn der getpeername, getockname, getsockopt oder setsockopt-Funktionen für den akzeptierten Socket verwendet werden sollen.
SO_UPDATE_CONNECT_CONTEXT ja DWORD (boolean) Diese Option wird mit den Funktionen ConnectEx, WSAConnectByList und WSAConnectByName verwendet. Diese Option aktualisiert die Eigenschaften des Sockets, nachdem die Verbindung hergestellt wurde. Diese Option sollte festgelegt werden, wenn der getpeername, getockname, getsockopt, setsockopt oder shutdown-Funktionen für den verbundenen Socket verwendet werden sollen.
SO_USELOOPBACK ja ja DWORD (boolean) Verwenden Sie die lokale Loopbackadresse beim Senden von Daten aus diesem Socket. 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 für 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.

Windows Support für SOL_SOCKET-Optionen

Auswahl 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 ja ja ja ja ja ja ja ja ja
SO_BROADCAST ja ja ja ja ja ja ja ja ja
SO_BSP_STATE ja ja ja ja
SO_CONDITIONAL_ACCEPT ja ja ja ja ja ja ja
SO_CONNDATA ja ja ja ja ja ja ja ja
SO_CONNDATALEN ja ja ja ja ja ja ja ja
SO_CONNECT_TIME ja ja ja ja ja ja ja ja ja
SO_CONNOPT ja ja ja ja ja ja ja ja
SO_CONNOPTLEN ja ja ja ja ja ja ja ja
SO_DISCDATA ja ja ja ja ja ja ja ja
SO_DISCDATALEN ja ja ja ja ja ja ja ja
SO_DISCOPT ja ja ja ja ja ja ja ja
SO_DISCOPTLEN ja ja ja ja ja ja ja ja
SO_DEBUG ja ja ja ja ja ja ja ja ja
SO_DONTLINGER ja ja ja ja ja ja ja ja ja
SO_DONTROUTE ja ja ja ja ja ja ja ja ja
SO_ERROR ja ja ja ja ja ja ja ja ja
SO_EXCLUSIVEADDRUSE ja ja ja ja ja ja ja Ja SP4+
SO_GROUP_ID ja ja ja ja
SO_GROUP_PRIORITY ja ja ja ja
SO_KEEPALIVE ja ja ja ja ja ja ja ja ja
SO_LINGER ja ja ja ja ja ja ja ja ja
SO_MAX_MSG_SIZE ja ja ja ja ja ja ja ja ja
SO_MAXDG ja ja ja ja ja ja ja
SO_MAXPATHDG ja ja ja ja ja ja ja
SO_OOBINLINE ja ja ja ja ja ja ja ja ja
SO_OPENTYPE ja ja ja ja ja ja ja ja ja
SO_PORT_SCALABILITY ja ja ja
SO_PROTECT ja
SO_PROTOCOL_INFO ja ja ja ja ja ja ja ja ja
SO_PROTOCOL_INFOA ja ja ja ja ja ja ja ja ja
SO_PROTOCOL_INFOW ja ja ja ja ja ja ja ja ja
SO_RCVBUF ja ja ja ja ja ja ja ja ja
SO_RCVLOWAT
SO_RCVTIMEO ja ja ja ja ja ja ja ja ja
SO_RANDOMIZE_PORT ja ja ja ja
SO_REUSEADDR ja ja ja ja ja ja ja ja ja
SO_REUSE_UNICASTPORT ja
SO_REUSE_MULTICASTPORT ja
SO_SNDBUF ja ja ja ja ja ja ja ja ja
SO_SNDLOWAT
SO_SNDTIMEO ja ja ja ja ja ja ja ja ja
SO_TYPE ja ja ja ja ja ja ja ja ja
SO_UPDATE_ACCEPT_CONTEXT ja ja ja ja ja ja ja ja
SO_UPDATE_CONNECT_CONTEXT ja ja ja ja ja ja
SO_USELOOPBACK

Remarks

Die SOL_SOCKET Socketoptionen werden in mehreren Winsock-Headerdateien definiert:

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

Auf dem für Windows Vista und höher veröffentlichten Microsoft Windows Software Development Kit (SDK) wurde die Organisation von Headerdateien geändert, und SOL_SOCKET Ebene wird in der Headerdatei Ws2def.h 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 übrigen SOL_SOCKET Socketoptionen werden in der Headerdatei Ws2def.h definiert, die automatisch von der Winsock2.h-Headerdatei enthalten ist. Ws2def.h sollte nie 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 werden in den Headerdateien Winsock2.h und Mswsock.h definiert.

Anforderungen

Anforderung Wert
Header
Winsock2.h;
Mswsock.h;
Ws2def.h (enthalten Winsock2.h)