Share via


LPWSPRECVDISCONNECT-Rückruffunktion (ws2spi.h)

Die LPWSPRecvDisconnect-Funktion beendet den Empfang auf einem Socket und ruft die Trenndaten ab, wenn der Socket verbindungsorientiert ist.

Syntax

LPWSPRECVDISCONNECT Lpwsprecvdisconnect;

int Lpwsprecvdisconnect(
  [in]  SOCKET s,
  [out] LPWSABUF lpInboundDisconnectData,
  [out] LPINT lpErrno
)
{...}

Parameter

[in] s

Deskriptor, der einen Socket identifiziert.

[out] lpInboundDisconnectData

Zeiger auf einen Puffer, in den die Trenndaten kopiert werden sollen.

[out] lpErrno

Zeiger auf den Fehlercode.

Rückgabewert

Wenn kein Fehler auftritt, gibt LPWSPRecvDisconnect 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
Der Puffer, auf den vom Parameter lpInboundDisconnectData verwiesen wird, ist zu klein.
WSAENOPROTOOPT
Trennen von Daten wird von der angegebenen Protokollfamilie nicht unterstützt.
WSAEINPROGRESS
Der Windows Sockets-Aufruf wird blockiert, oder der Dienstanbieter verarbeitet weiterhin eine Rückruffunktion.
WSAENOTCONN
Socket ist nicht verbunden (nur verbindungsorientierte Sockets).
WSAENOTSOCK
Der Deskriptor ist kein Socket.

Hinweise

LPWSPRecvDisconnect wird auf verbindungsorientierten Sockets verwendet, um den Empfang zu deaktivieren und alle eingehenden Trennungsdaten von der Remotepartei abzurufen.

Nachdem diese Funktion erfolgreich ausgestellt wurde, werden nachfolgende Empfangsvorgänge für den Socket nicht mehr zugelassen. Dies hat keine Auswirkungen auf die unteren Protokollebenen. Bei TCP wird das TCP-Fenster nicht geändert, und eingehende Daten werden akzeptiert (aber nicht bestätigt), bis das Fenster erschöpft ist. Für UDP werden eingehende Datagramme akzeptiert und in die Warteschlange eingereiht. In keinem Fall wird ein ICMP-Fehlerpaket generiert.

Um eingehende Trennungsdaten erfolgreich zu empfangen, muss ein Windows Sockets SPI-Client andere Mechanismen verwenden, um festzustellen, ob die Verbindung geschlossen wurde. Beispielsweise muss ein Client eine FD_CLOSE Benachrichtigung empfangen oder einen Null-Rückgabewert oder einen WSAEDISCON-Fehlercode von LPWSPRecv abrufen.

Beachten Sie, dass LPWSPRecvDisconnect den Socket nicht schließt und an den Socket angefügte Ressourcen erst freigegeben werden, wenn LPWSPCloseSocket aufgerufen wird.

Hinweis

LPWSPRecvDisconnect blockiert nicht, unabhängig von der einstellung SO_LINGER für den Socket. Ein SPI-Client für Windows Sockets sollte sich nicht darauf verlassen, einen Socket wiederverwenden zu können, nachdem er LPWSPRecvDisconnected wurde. Insbesondere ist ein Windows Sockets-Anbieter nicht verpflichtet, die Verwendung von LPWSPConnect auf einem solchen Socket zu unterstützen.

Anforderungen

   
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

LPWSPConnect

LPWSPSocket