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 |
---|---|
Beim Netzwerksubsystem ist ein Fehler aufgetreten. | |
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. | |
Die Funktion wird aufgerufen, wenn ein Rückruf ausgeführt wird. | |
Socket wurde nicht an LPWSPBind gebunden. | |
„Socket ist bereits verbunden.“ | |
Es sind keine weiteren Socketbeschreibungen verfügbar. | |
Es ist kein Pufferplatz verfügbar. | |
Der Deskriptor ist kein Socket. | |
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 |