Partager via


Fonction WSASendDisconnect (winsock2.h)

La fonction WSASendDisconnect initie l’arrêt de la connexion pour le socket et envoie les données de déconnexion.

Syntaxe

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

Paramètres

[in] s

Descripteur identifiant un socket.

[in] lpOutboundDisconnectData

Pointeur vers les données de déconnexion sortantes.

Valeur retournée

Si aucune erreur ne se produit, WSASendDisconnect retourne zéro. Sinon, une valeur de SOCKET_ERROR est retournée et un code d’erreur spécifique peut être récupéré en appelant WSAGetLastError.

Code d'erreur Signification
WSANOTINITIALISED
Un appel WSAStartup réussi doit se produire avant d’utiliser cette fonction.
WSAENETDOWN
Le sous-système réseau a échoué.
WSAENOPROTOOPT
Le paramètre lpOutboundDisconnectData n’est pas NULL et les données de déconnexion ne sont pas prises en charge par le fournisseur de services.
WSAEINPROGRESS
Un appel bloquant Windows Sockets 1.1 est en cours ou le fournisseur de services traite toujours une fonction de rappel.
WSAENOTCONN
Le socket n’est pas connecté (sockets orientés connexion uniquement).
WSAENOTSOCK
Le descripteur n’est pas un socket.
WSAEFAULT
Le paramètre lpOutboundDisconnectData n’est pas entièrement contenu dans une partie valide de l’espace d’adressage utilisateur.

Remarques

La fonction WSASendDisconnect est utilisée sur les sockets orientés connexion pour désactiver la transmission et lancer l’arrêt de la connexion ainsi que la transmission de données de déconnexion, le cas échéant. Cela équivaut à un arrêt (SD_SEND), sauf que WSASendDisconnect autorise également l’envoi de données de déconnexion (dans les protocoles qui les prennent en charge).

Une fois cette fonction correctement émise, les envois suivants sont interdits.

Le paramètre lpOutboundDisconnectData , s’il n’est pas NULL, pointe vers une mémoire tampon contenant les données de déconnexion sortantes à envoyer à la partie distante pour la récupération à l’aide de WSARecvDisconnect.

Note L’implémentation native de TCP/IP sur Windows ne prend pas en charge les données de déconnexion. Les données de déconnexion sont uniquement prises en charge avec les fournisseurs Windows Sockets qui ont l’indicateur XP1_DISCONNECT_DATA dans leur structure WSAPROTOCOL_INFO . Utilisez la fonction WSAEnumProtocols pour obtenir WSAPROTOCOL_INFO structures pour tous les fournisseurs installés.
 
La fonction WSASendDisconnect ne ferme pas le socket et les ressources attachées au socket ne sont pas libérées tant que closesocket n’est pas appelé.

La fonction WSASendDisconnect ne bloque pas, quel que soit le paramètre SO_LINGER sur le socket.

Une application ne doit pas s’appuyer sur la possibilité de réutiliser un socket après l’appel de WSASendDisconnect. En particulier, un fournisseur Windows Sockets n’est pas nécessaire pour prendre en charge l’utilisation de la connexion/de WSAConnect sur un tel socket.

Note Lors de l’émission d’un appel Winsock bloquant tel que WSASendDisconnect, Winsock peut avoir besoin d’attendre qu’un événement réseau puisse se terminer. Winsock effectue une attente alertable dans cette situation, qui peut être interrompue par un appel de procédure asynchrone (APC) planifié sur le même thread. L’émission d’un autre appel Winsock bloquant à l’intérieur d’un APC qui a interrompu un appel Winsock bloquant en cours sur le même thread entraîne un comportement non défini et ne doit jamais être tenté par les clients Winsock.
 

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête winsock2.h
Bibliothèque Ws2_32.lib
DLL Ws2_32.dll

Voir aussi

Fonctions Winsock

Informations de référence sur Winsock

connect

socket