Fonction WSARecvDisconnect (winsock2.h)
La fonction WSARecvDisconnect arrête la réception sur un socket et récupère les données de déconnexion si le socket est orienté connexion.
Syntaxe
int WSAAPI WSARecvDisconnect(
[in] SOCKET s,
[out] LPWSABUF lpInboundDisconnectData
);
Paramètres
[in] s
Descripteur identifiant un socket.
[out] lpInboundDisconnectData
Pointeur vers les données de déconnexion entrantes.
Valeur retournée
Si aucune erreur ne se produit, WSARecvDisconnect 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 |
---|---|
Un appel WSAStartup réussi doit se produire avant d’utiliser cette fonction. | |
Le sous-système réseau a échoué. | |
La mémoire tampon référencée par le paramètre lpInboundDisconnectData est trop petite. | |
Les données de déconnexion ne sont pas prises en charge par la famille de protocoles indiquée. Notez que les implémentations de TCP/IP qui ne prennent pas en charge les données de déconnexion ne sont pas nécessaires pour retourner le code d’erreur WSAENOPROTOOPT. Pour plus d’informations sur l’implémentation Microsoft de TCP/IP, consultez la section remarques. | |
Un appel bloquant Windows Sockets 1.1 est en cours ou le fournisseur de services traite toujours une fonction de rappel. | |
Le socket n’est pas connecté (sockets orientés connexion uniquement). | |
Le descripteur n’est pas un socket. |
Remarques
La fonction WSARecvDisconnect est utilisée sur les sockets orientés connexion pour désactiver la réception et récupérer les données de déconnexion entrantes de la partie distante. Cela équivaut à un arrêt (SD_RECEIVE), sauf que WSARecvDisconnect permet également la réception des données de déconnexion (dans les protocoles qui les prennent en charge).
Une fois cette fonction correctement émise, les réceptions suivantes sur le socket sont interdites. L’appel de WSARecvDisconnect n’a aucun effet sur les couches de protocole inférieures. Pour les sockets TCP, si des données sont toujours en file d’attente sur le socket en attente d’être reçues ou si des données arrivent par la suite, la connexion est réinitialisée, car les données ne peuvent pas être remises à l’utilisateur. Pour UDP, les datagrammes entrants sont acceptés et mis en file d’attente. En aucun cas, un paquet d’erreur ICMP ne sera généré.
La fonction WSARecvDisconnect 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 WSARecvDisconnect ne bloque pas, quel que soit le paramètre SO_LINGER sur le socket.
Une application ne doit pas compter sur la possibilité de réutiliser un socket une fois qu’elle a été déconnectée à l’aide de WSARecvDisconnect. En particulier, un fournisseur de sockets Windows n’est pas nécessaire pour prendre en charge l’utilisation de la connexion ou de WSAConnect sur un tel socket.
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 |