Fonction de rappel LPWSPRECVDISCONNECT (ws2spi.h)
La fonction LPWSPRecvDisconnect 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
LPWSPRECVDISCONNECT Lpwsprecvdisconnect;
int Lpwsprecvdisconnect(
[in] SOCKET s,
[out] LPWSABUF lpInboundDisconnectData,
[out] LPINT lpErrno
)
{...}
Paramètres
[in] s
Descripteur identifiant un socket.
[out] lpInboundDisconnectData
Pointeur vers une mémoire tampon dans laquelle les données de déconnexion doivent être copiées.
[out] lpErrno
Pointeur vers le code d’erreur.
Valeur retournée
Si aucune erreur ne se produit, LPWSPRecvDisconnect retourne zéro. Sinon, une valeur de SOCKET_ERROR est retournée et un code d’erreur spécifique est disponible dans lpErrno.
Code d'erreur | Signification |
---|---|
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. | |
L’appel de sockets Windows 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
LPWSPRecvDisconnect est utilisé 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.
Une fois cette fonction correctement émise, les réceptions suivantes sur le socket sont interdites. Cela n’a aucun effet sur les couches de protocole inférieures. Pour TCP, la fenêtre TCP n’est pas modifiée et les données entrantes sont acceptées (mais non reconnues) jusqu’à ce que la fenêtre soit épuisée. 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é.
Pour recevoir correctement les données de déconnexion entrantes, un client SPI Windows Sockets doit utiliser d’autres mécanismes pour déterminer que le circuit a été fermé. Par exemple, un client doit recevoir une notification FD_CLOSE, obtenir une valeur de retour zéro ou un code d’erreur WSAEDISCON de LPWSPRecv.
Notez que LPWSPRecvDisconnect ne ferme pas le socket et que les ressources attachées au socket ne sont pas libérées tant que LPWSPCloseSocket n’est pas appelé.
Notes
LPWSPRecvDisconnect ne bloque pas, quel que soit le paramètre SO_LINGER sur le socket. Un client SPI Windows Sockets ne doit pas s’appuyer sur la possibilité de réutiliser un socket une fois qu’il a été connecté à LPWSPRecvDisconnect. En particulier, un fournisseur Windows Sockets n’est pas nécessaire pour prendre en charge l’utilisation de LPWSPConnect sur un tel socket.
Spécifications
Client minimal pris en charge | Windows 2000 Professionnel [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
En-tête | ws2spi.h |