WSARecvDisconnect-Funktion (winsock2.h)
Die WSARecvDisconnect-Funktion beendet den Empfang auf einem Socket und ruft die Trenndaten ab, wenn der Socket verbindungsorientiert ist.
Syntax
int WSAAPI WSARecvDisconnect(
[in] SOCKET s,
[out] LPWSABUF lpInboundDisconnectData
);
Parameter
[in] s
Ein Deskriptor, der einen Socket identifiziert.
[out] lpInboundDisconnectData
Ein Zeiger auf die eingehenden Trennungsdaten.
Rückgabewert
Wenn kein Fehler auftritt, gibt WSARecvDisconnect null zurück. Andernfalls wird der Wert SOCKET_ERROR zurückgegeben, und ein bestimmter Fehlercode kann durch Aufrufen von WSAGetLastError abgerufen werden.
Fehlercode | Bedeutung |
---|---|
Vor der Verwendung dieser Funktion muss ein erfolgreicher WSAStartup-Aufruf erfolgen. | |
Fehler beim Netzwerksubsystem. | |
Der Puffer, auf den der Parameter lpInboundDisconnectData verweist, ist zu klein. | |
Die Trennungsdaten werden von der angegebenen Protokollfamilie nicht unterstützt. Beachten Sie, dass TCP/IP-Implementierungen, die keine Trennungsdaten unterstützen, nicht erforderlich sind, um den WSAENOPROTOOPT-Fehlercode zurückzugeben. Im Abschnitt "Hinweise" finden Sie Informationen zur Microsoft-Implementierung von TCP/IP. | |
Ein blockierter Windows Sockets 1.1-Aufruf wird ausgeführt, oder der Dienstanbieter verarbeitet noch eine Rückruffunktion. | |
Der Socket ist nicht verbunden (nur verbindungsorientierte Sockets). | |
Der Deskriptor ist kein Socket. |
Hinweise
Die WSARecvDisconnect-Funktion wird auf verbindungsorientierten Sockets verwendet, um den Empfang zu deaktivieren und alle eingehenden Verbindungsdaten von der Remotepartei abzurufen. Dies entspricht einem Herunterfahren (SD_RECEIVE), mit der Ausnahme, dass WSARecvDisconnect auch den Empfang von Getrenntdaten (in Protokollen, die dies unterstützen) zulässt.
Nachdem diese Funktion erfolgreich ausgestellt wurde, werden nachfolgende Empfangsvorgänge für den Socket nicht mehr zugelassen. Das Aufrufen von WSARecvDisconnect hat keine Auswirkungen auf die unteren Protokollebenen. Bei TCP-Sockets wird die Verbindung zurückgesetzt, da die Daten nicht an den Benutzer übermittelt werden können, wenn weiterhin Daten auf dem Socket in die Warteschlange eingereiht sind, die auf den Empfang warten. Für UDP werden eingehende Datagramme akzeptiert und in die Warteschlange eingereiht. In keinem Fall wird ein ICMP-Fehlerpaket generiert.
Die WSARecvDisconnect-Funktion schließt den Socket nicht, und an den Socket angefügte Ressourcen werden erst freigegeben, wenn closesocket aufgerufen wird.
Die WSARecvDisconnect-Funktion wird unabhängig von der Einstellung SO_LINGER für den Socket nicht blockiert.
Eine Anwendung sollte sich nicht darauf verlassen, einen Socket wiederverwenden zu können, nachdem er mithilfe von WSARecvDisconnect getrennt wurde. Insbesondere ist ein Windows Sockets-Anbieter nicht verpflichtet, die Verwendung von connect oder WSAConnect für einen solchen Socket zu unterstützen.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 Professional [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows 2000 Server [nur Desktop-Apps] |
Zielplattform | Windows |
Kopfzeile | winsock2.h |
Bibliothek | Ws2_32.lib |
DLL | Ws2_32.dll |