Freigeben über


WSASendDisconnect-Funktion (winsock2.h)

Die WSASendDisconnect-Funktion initiiert das Beenden der Verbindung für den Socket und sendet Trenndaten.

Syntax

int WSAAPI WSASendDisconnect(
  [in] SOCKET   s,
  [in] LPWSABUF lpOutboundDisconnectData
);

Parameter

[in] s

Deskriptor, der einen Socket identifiziert.

[in] lpOutboundDisconnectData

Ein Zeiger auf die ausgehenden Verbindungsdaten.

Rückgabewert

Wenn kein Fehler auftritt, gibt WSASendDisconnect null zurück. Andernfalls wird der Wert SOCKET_ERROR zurückgegeben, und ein bestimmter Fehlercode kann durch Aufrufen von WSAGetLastError abgerufen werden.

Fehlercode Bedeutung
WSANOTINITIALISIERT
Vor der Verwendung dieser Funktion muss ein erfolgreicher WSAStartup-Aufruf erfolgen.
WSAENETDOWN
Beim Netzwerksubsystem ist ein Fehler aufgetreten.
WSAENOPROTOOPT
Der Parameter lpOutboundDisconnectData ist nicht NULL, und die Verbindungsdaten werden vom Dienstanbieter nicht unterstützt.
WSAEINPROGRESS
Ein blockierter Windows Sockets 1.1-Aufruf wird ausgeführt, oder der Dienstanbieter verarbeitet weiterhin eine Rückruffunktion.
WSAENOTCONN
Der Socket ist nicht verbunden (nur verbindungsorientierte Sockets).
WSAENOTSOCK
Der Deskriptor ist kein Socket.
WSAEFAULT
Der parameter lpOutboundDisconnectData ist nicht vollständig in einem gültigen Teil des Benutzeradressraums enthalten.

Hinweise

Die WSASendDisconnect-Funktion wird an verbindungsorientierten Sockets verwendet, um die Übertragung zu deaktivieren und die Beendigung der Verbindung zusammen mit der Übertragung von Trenndaten zu initiieren, falls vorhanden. Dies entspricht einem Herunterfahren (SD_SEND), mit der Ausnahme, dass WSASendDisconnect auch das Senden von Verbindungsdaten (in Protokollen, die dies unterstützen) zulässt.

Nachdem diese Funktion erfolgreich ausgestellt wurde, werden nachfolgende Senden nicht mehr zugelassen.

Der lpOutboundDisconnectData-Parameter , wenn nicht NULL, verweist auf einen Puffer, der die ausgehenden Verbindungsdaten enthält, die zum Abrufen mithilfe von WSARecvDisconnect an die Remotepartei gesendet werden sollen.

Hinweis Die native Implementierung von TCP/IP unter Windows unterstützt keine Verbindungsdaten. Daten trennen wird nur bei Windows Sockets-Anbietern unterstützt, die das XP1_DISCONNECT_DATA-Flag in ihrer WSAPROTOCOL_INFO-Struktur haben. Verwenden Sie die WSAEnumProtocols-Funktion , um WSAPROTOCOL_INFO Strukturen für alle installierten Anbieter abzurufen.
 
Die WSASendDisconnect-Funktion schließt den Socket nicht, und ressourcen, die an den Socket angefügt sind, werden erst freigegeben, wenn closesocket aufgerufen wird.

Die WSASendDisconnect-Funktion wird unabhängig von der SO_LINGER Einstellung für den Socket nicht blockiert.

Eine Anwendung sollte sich nicht darauf verlassen, dass ein Socket nach dem Aufruf von WSASendDisconnect wiederverwendet werden kann. Insbesondere muss ein Windows Sockets-Anbieter die Verwendung von Connect/WSAConnect für einen solchen Socket nicht unterstützen.

Hinweis Wenn Sie einen blockierenden Winsock-Aufruf wie WSASendDisconnect ausstellen, muss Winsock möglicherweise auf ein Netzwerkereignis warten, bevor der Aufruf abgeschlossen werden kann. Winsock führt in dieser Situation eine warnbare Wartezeit aus, die durch einen asynchronen Prozeduraufruf (APC) unterbrochen werden kann, der für denselben Thread geplant ist. Das Ausgeben eines weiteren blockierenden Winsock-Aufrufs in einem APC, der einen fortlaufenden blockierenden Winsock-Aufruf im selben Thread unterbrochen hat, führt zu nicht definiertem Verhalten und darf niemals von Winsock-Clients versucht werden.
 

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

Weitere Informationen

Winsock-Funktionen

Winsock-Referenz

connect

Socket