Share via


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
WSAENETDOWN
Fehler beim Netzwerksubsystem.
WSAEFAULT
Einer der optval - oder optlen-Parameter ist kein gültiger Teil des Benutzeradressraums, oder der optlen-Parameter ist zu klein.
WSAEINVAL
Die Ebene ist unbekannt oder ungültig.
WSAEINPROGRESS
Die Funktion wird aufgerufen, wenn ein Rückruf ausgeführt wird.
WSAENOPROTOOPT
Die Option ist unbekannt oder wird von der angegebenen Protokollfamilie nicht unterstützt.
WSAENOTSOCK
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.

SO_KEEPALIVE

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

LPWSPSetSockOpt

LPWSPSocket