LPWSPLISTEN-Rückruffunktion (ws2spi.h)

Die LPWSPListen-Funktion richtet einen Socket ein, um auf eingehende Verbindungen zu lauschen.

Syntax

LPWSPLISTEN Lpwsplisten;

int Lpwsplisten(
  [in]  SOCKET s,
  [in]  int backlog,
  [out] LPINT lpErrno
)
{...}

Parameter

[in] s

Deskriptor, der einen gebundenen, nicht verbundenen Socket identifiziert.

[in] backlog

Maximale Länge, auf die sich die Warteschlange ausstehender Verbindungen vergrößern kann. Wenn dieser Wert SOMAXCONN ist, sollte der Dienstanbieter den Backlog auf einen maximalen "angemessenen" Wert festlegen. Es gibt keine Standardbereitstellung, um den tatsächlichen Backlogwert zu ermitteln.

[out] lpErrno

Zeiger auf den Fehlercode.

Rückgabewert

Wenn kein Fehler auftritt, gibt LPWSPListen null zurück. Andernfalls wird der Wert SOCKET_ERROR zurückgegeben, und ein bestimmter Fehlercode ist in lpErrno verfügbar.

Fehlercode Bedeutung
WSAENETDOWN
Beim Netzwerksubsystem ist ein Fehler aufgetreten.
WSAEADDRINUSE
Die lokale Adresse des Sockets wird bereits verwendet, und der Socket wurde nicht markiert, um die Wiederverwendung von Adressen mit SO_REUSEADDR zu ermöglichen. Dieser Fehler tritt normalerweise zum Zeitpunkt des Bindens auf, kann jedoch bis zu dieser Funktion verzögert werden, wenn **bind** an eine teilweise Aufplatzhalteradresse (mit ADDR_ANY) war und eine bestimmte Adresse zum Zeitpunkt dieser Funktion festgelegt werden muss.
WSAEINPROGRESS
Die Funktion wird aufgerufen, wenn ein Rückruf ausgeführt wird.
WSAEINVAL
Socket wurde nicht an LPWSPBind gebunden.
WSAEISCONN
„Socket ist bereits verbunden.“
WSAEMFILE
Es sind keine weiteren Socketbeschreibungen verfügbar.
WSAENOBUFS
Es ist kein Pufferplatz verfügbar.
WSAENOTSOCK
Der Deskriptor ist kein Socket.
WSAEOPNOTSUPP
Der Socket, auf den verwiesen wird, hat keinen Typ, der den LPWSPListen-Vorgang unterstützt.

Hinweise

Um Verbindungen zu akzeptieren, wird zuerst ein Socket mit LPWSPSocket erstellt, das an eine lokale Adresse mit LPWSPBind gebunden ist, ein Backlog für eingehende Verbindungen wird mit LPWSPListen angegeben, und dann werden die Verbindungen mit LPWSPAccept akzeptiert. LPWSPListen gilt nur für Sockets, die verbindungsorientiert sind (z. B. SOCK_STREAM). Die Sockets werden in den passiven Modus versetzt, in dem eingehende Verbindungsanforderungen bestätigt und in die Warteschlange gestellt werden, bis die Annahme durch den Windows Sockets SPI-Client aussteht.

Diese Funktion wird in der Regel von Servern verwendet, die mehrere Verbindungsanforderungen gleichzeitig aufweisen können: Wenn eine Verbindungsanforderung mit der vollen Warteschlange eingeht, erhält der Client eine Fehlermeldung mit einem Hinweis auf WSAECONNREFUSED.

LPWSPListen sollte weiterhin rational funktionieren, wenn keine Deskriptoren verfügbar sind. Sie sollte Verbindungen akzeptieren, bis die Warteschlange geleert wird. Wenn Deskriptoren verfügbar werden, füllt ein späterer Aufruf von LPWSPListen oder LPWSPAccept die Warteschlange nach Möglichkeit erneut in den aktuellen oder letzten Backlog aus, und setzen Sie die Überwachung auf eingehende Verbindungen fort.

Ein Windows Sockets SPI-Client kann LPWSPListen mehrmals auf demselben Socket aufrufen. Dies hat zur Folge, dass der aktuelle Backlog für den Abhörsocket aktualisiert wird. Wenn mehr Verbindungen als der neue Backlogwert ausstehen, werden die überschüssigen ausstehenden Verbindungen zurückgesetzt und gelöscht.

Der Backlogparameter ist (unbeaufsichtigt) auf einen angemessenen Wert beschränkt, der vom Dienstanbieter bestimmt wird. Ungültige Werte werden durch den nächstgelegenen gesetzlichen Wert ersetzt. Es gibt keine Standardbereitstellung, um den tatsächlichen Backlogwert zu ermitteln.

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

LPWSPAccept

LPWSPConnect

LPWSPSocket