LPWSPGETSOCKOPT-Rückruffunktion (ws2spi.h)
Die LPWSPGetSockOpt-Funktion ruft eine Socketoption ab.
Syntax
LPWSPGETSOCKOPT Lpwspgetsockopt;
int Lpwspgetsockopt(
SOCKET s,
int level,
int optname,
char *optval,
LPINT optlen,
LPINT lpErrno
)
{...}
Parameter
s
Ein Deskriptor, der einen Socket identifiziert.
level
Die Ebene, auf der die Option definiert ist; zu den unterstützten Ebenen gehören SOL_SOCKET. (Weitere protokollspezifische Ebenen finden Sie im Anhang.)
optname
Die Socketoption, für die der Wert abgerufen werden soll.
optval
Ein Zeiger auf den Puffer, in dem der Wert für die angeforderte Option zurückgegeben werden soll.
optlen
Ein Zeiger auf die Größe des optval-Puffers in Bytes.
lpErrno
Ein Zeiger auf den Fehlercode.
Rückgabewert
Wenn kein Fehler auftritt, gibt LPWSPGetSockOpt null zurück. Andernfalls wird der Wert SOCKET_ERROR zurückgegeben, und ein bestimmter Fehlercode ist in lpErrno verfügbar.
Fehlercode | Bedeutung |
---|---|
Fehler beim Netzwerksubsystem. | |
Einer der optval - oder optlen-Parameter ist kein gültiger Teil des Benutzeradressraums, oder der optlen-Parameter ist zu klein. | |
Die Ebene ist unbekannt oder ungültig. | |
Die Funktion wird aufgerufen, wenn ein Rückruf ausgeführt wird. | |
Die Option ist unbekannt oder wird von der angegebenen Protokollfamilie nicht unterstützt. | |
Der Deskriptor ist kein Socket. |
Hinweise
Die LPWSPGetSockOpt-Funktion ruft den aktuellen Wert für eine Socketoption ab, die einem Socket eines beliebigen Typs in einem beliebigen Zustand zugeordnet ist, und speichert das Ergebnis in optval. Optionen können auf mehreren Protokollebenen vorhanden sein, aber sie sind immer auf der obersten Socketebene vorhanden. Optionen wirken sich auf Socketvorgänge aus, z. B. das Routing von Paketen und die OOB-Datenübertragung.
Der der ausgewählten Option zugeordnete Wert wird im Puffer optval zurückgegeben. Die ganze Zahl, auf die von optlen verwiesen wird, sollte ursprünglich die Größe dieses Puffers enthalten. bei der Rückgabe wird sie auf die Größe des zurückgegebenen Werts festgelegt. Für SO_LINGER wird dies die Größe einer Struktur sein, die verweilt; bei den meisten anderen Optionen ist dies die Größe einer ganzen Zahl.
Der Spi-Client von Windows Sockets ist für die Zuweisung von Speicherplatz verantwortlich, auf den durch einen der angegebenen Parameter direkt oder indirekt verwiesen wird.
Wenn die Option nie mit LPWSPSetSockOpt festgelegt wurde, gibt LPWSPGetSockOpt den Standardwert für die Option zurück.
Weitere Informationen zu Socketoptionen finden Sie unter Socketoptionen.
level = SOL_SOCKET
Wert | Typ | Bedeutung | Standard |
---|---|---|---|
SO_ACCEPTCONN | BOOL | Der Socket lauscht über LPWSPListen. | FALSE , es sei denn, ein LPWSPListen wurde ausgeführt. |
SO_BROADCAST | BOOL | Der Socket ist für die Übertragung und den Empfang von Broadcastnachrichten konfiguriert. | FALSE |
SO_DEBUG | BOOL | Debuggen ist aktiviert. | FALSE |
SO_DONTLINGER | BOOL | Wenn true, ist die Option SO_LINGER deaktiviert. | TRUE |
SO_DONTROUTE | BOOL | Routing ist deaktiviert. Das Festlegen dieser Socketoption ist erfolgreich, wird aber auf AF_INET Sockets ignoriert. tritt auf AF_INET6 Sockets mit WSAENOPROTOOPT aus. Diese Option wird für ATM-Sockets nicht unterstützt (führt zu einem Fehler). | FALSE |
SO_ERROR | integer | Ruft fehler status ab und löscht. | 0 |
SO_GROUP_ID | GROUP | Reserviert. | Null |
SO_GROUP_PRIORITY | integer | Reserviert. | 0 |
SO_KEEPALIVE | BOOL | Keepalives werden gesendet. Wird für ATM-Sockets nicht unterstützt (führt zu einem Fehler). | FALSE |
SO_LINGER | LINGER-Struktur | Gibt die aktuellen Verweiloptionen zurück. | 1 ist aktiviert (Standardeinstellung), 0 ist deaktiviert. |
SO_MAX_MSG_SIZE | Ganze Zahl ohne Vorzeichen | Die maximale Größe einer Nachricht für nachrichtenorientierte Sockettypen (z. B. SOCK_DGRAM). Hat keine Bedeutung für streamorientierte Sockets. | Implementierung abhängig |
SO_OOBINLINE | BOOL | OOB-Daten werden im normalen Datenstrom empfangen. | FALSE |
SO_PROTOCOL_INFO | WSAPROTOCOL_INFO-Struktur | Eine Beschreibung der Protokollinformationen für das Protokoll, das an diesen Socket gebunden ist. | Protokollabhängig |
SO_RCVBUF | integer | 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. | Implementierung abhängig |
SO_REUSEADDR | BOOL | Der Socket kann an eine Adresse gebunden werden, die bereits verwendet wird. Diese Option gilt nicht für ATM-Sockets. | FALSE. |
SO_SNDBUF | integer | 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. | Implementierung abhängig |
SO_TYPE | integer | Der Typ des Sockets (z. B. SOCK_STREAM). | Wie mit LPWSPSocket">LPWSPSocket erstellt |
PVD_CONFIG | Abhängig vom Dienstanbieter | Ein undurchsichtiges Datenstrukturobjekt des Dienstanbieters, der Sockets zugeordnet ist. Dieses Objekt speichert die aktuellen Konfigurationsinformationen des Dienstanbieters. Das genaue Format dieser Datenstruktur ist dienstanbieterspezifisch. | Implementierung abhängig |
Das Aufrufen von LPWSPGetSockOpt mit einer nicht unterstützten Option führt dazu, dass ein Fehlercode von WSAENOPROTOOPT in lpErrno zurückgegeben wird.
-
SO_DEBUG
-
Windows Sockets-Dienstanbieter werden empfohlen (aber nicht erforderlich), Ausgabedebuginformationen anzugeben, wenn die option SO_DEBUG von einem Windows Sockets SPI-Client festgelegt wird. Der Mechanismus zum Generieren der Debuginformationen und deren Form liegen außerhalb des Geltungsbereichs dieser Spezifikation.
-
SO_ERROR
-
Die Option SO_ERROR gibt den pro Socket basierenden Fehlercode zurück und setzt diesen zurück (der nicht unbedingt mit dem threadbasierten Fehlercode übereinstimmt, der vom WS2_32.DLL verwaltet wird). Bei einem erfolgreichen Aufruf von Windows Sockets im Socket wird der socketbasierte Fehlercode, der von der Option SO_ERROR zurückgegeben wird, nicht zurückgesetzt.
-
SO_GROUP_ID
-
Reserviert. Dieser Wert sollte NULL sein.
-
SO_GROUP_PRIORITY
-
Reserviert.
-
Ein Windows Sockets SPI-Client kann anfordern, dass ein TCP/IP-Dienstanbieter die Verwendung von Keep-Alive-Paketen für TCP-Verbindungen aktiviert, indem die Option SO_KEEPALIVE Socket aktiviert wird. Ein Windows Sockets-Anbieter muss die Verwendung von Keep-Alives nicht unterstützen: Wenn dies der Fall ist, ist die genaue Semantik implementierungsspezifisch, sollte jedoch Abschnitt 4.2.3.6 von RFC 1122: Anforderungen für Internethosts – Kommunikationsebenen entsprechen. (Diese Ressource ist möglicherweise nur in Englisch verfügbar.) Wenn eine Verbindung aufgrund von Keep-Alives unterbrochen wird, wird der Fehlercode WSAENETRESET an alle Aufrufe zurückgegeben, die im Socket ausgeführt werden, und alle nachfolgenden Aufrufe schlagen mit WSAENOTCONN fehl.
-
SO_LINGER
-
SO_LINGER steuert die Aktion, die ausgeführt wird, wenn nicht gesendete Daten auf einem Socket in die Warteschlange gestellt werden und ein LPWSPCloseSocket ausgeführt wird. Unter LPWSPCloseSocket finden Sie eine Beschreibung der Art und Weise, in der sich die einstellungen der SO_LINGER auf die Semantik von LPWSPCloseSocket auswirken. Der SPI-Client von Windows Sockets ruft das gewünschte Verhalten ab, indem eine LINGER-Struktur (auf die der optval-Parameter verweist) mit den folgenden Elementen erstellt wird:
}
-
SO_MAX_MSG_SIZE
-
Dies ist eine socket-Option zum Abrufen, die die maximale Größe einer ausgehenden Sendenachricht für nachrichtenorientierte Sockettypen (z. B. SOCK_DGRAM) angibt, wie sie vom Dienstanbieter implementiert werden. Es hat keine Bedeutung für bytestreamorientierte Sockets. Es gibt keine Bereitstellung, um die maximale Größe eingehender Nachrichten zu bestimmen.
-
SO_PROTOCOL_INFOW
-
Dies ist eine get-only-Option, die die WSAPROTOCOL_INFO Struktur bereitstellt, die diesem Socket zugeordnet ist. Weitere Informationen zu dieser Struktur finden Sie unter WSCEnumProtocols .
-
SO_SNDBUF
-
Wenn ein Windows Sockets-Dienstanbieter die Optionen SO_RCVBUF und SO_SNDBUF unterstützt, kann ein SPI-Client für Windows Sockets LPWSPSetSockOpt verwenden, um verschiedene Puffergrößen (größer oder kleiner) anzufordern. Der Anruf kann erfolgreich sein, obwohl der Dienstanbieter nicht den gesamten angeforderten Betrag zur Verfügung gestellt hat. Ein Spi-Client für Windows Sockets muss diese Funktion mit derselben Option aufrufen, um die tatsächlich bereitgestellte Puffergröße zu überprüfen.
-
SO_REUSEADDR
-
Standardmäßig kann ein Socket nicht an eine lokale Adresse gebunden werden, die bereits verwendet wird (siehe LPWSPBind). Gelegentlich kann es jedoch wünschenswert sein, eine Adresse auf diese Weise wiederzuverwenden. Da jede Verbindung durch die Kombination aus lokalen und Remoteadressen eindeutig identifiziert wird, ist es kein Problem, zwei Sockets an dieselbe lokale Adresse gebunden zu haben, solange die Remoteadressen unterschiedlich sind. Um den Windows Sockets-Anbieter darüber zu informieren, dass ein LPWSPBind auf einem Socket an eine lokale Adresse gebunden werden soll, die bereits von einem anderen Socket verwendet wird, sollte der SPI-Client von Windows Sockets die option SO_REUSEADDR Socket für den Socket festlegen, bevor die LPWSPBind ausgegeben wird. Beachten Sie, dass die Option nur zum Zeitpunkt der LPWSPBind interpretiert wird. Es ist daher unnötig (aber harmlos), die Option für einen Socket festzulegen, der nicht an eine vorhandene Adresse gebunden werden soll, und die Option festzulegen oder zurückzusetzen, nachdem die LPWSPBind keine Auswirkungen auf diesen oder einen anderen Socket hat.
-
PVD_CONFIG
-
Diese Option ruft ein undurchsichtiges Datenstrukturobjekt vom Dienstanbieter ab, der Sockets zugeordnet ist. Dieses Objekt speichert die aktuellen Konfigurationsinformationen des Dienstanbieters. Das genaue Format dieser Datenstruktur ist dienstanbieterspezifisch.
Anforderungen
Anforderung Wert Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps] Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps] Kopfzeile ws2spi.h Weitere Informationen