Partager via


Fonction de rappel LPWSPSHUTDOWN (ws2spi.h)

La fonction LPWSPShutdown désactive les envois et/ou les réceptions sur un socket.

Syntaxe

LPWSPSHUTDOWN Lpwspshutdown;

int Lpwspshutdown(
  [in]  SOCKET s,
  [in]  int how,
  [out] LPINT lpErrno
)
{...}

Paramètres

[in] s

Descripteur identifiant un socket.

[in] how

Indicateur qui décrit les types d’opérations qui ne seront plus autorisés.

[out] lpErrno

Pointeur vers le code d’erreur.

Valeur retournée

Si aucune erreur ne se produit, LPWSPShutdown retourne zéro. Sinon, la valeur SOCKET_ERROR est retournée et un code d’erreur spécifique est disponible dans lpErrno.

Code d'erreur Signification
WSAENETDOWN
Le sous-système réseau a échoué.
WSAEINVAL
Le comment n’est pas valide ou n’est pas cohérent avec le type de socket. Par exemple, SD_SEND est utilisé avec un type de socket UNI_RECV.
WSAEINPROGRESS
La fonction est appelée lorsqu’un rappel est en cours.
WSAENOTCONN
Le socket n’est pas connecté (sockets orientés connexion uniquement).
WSAENOTSOCK
Le descripteur n’est pas un socket.

Remarques

La fonction LPWSPShutdown est utilisée sur tous les types de sockets pour désactiver la réception, la transmission ou les deux.

Si comment est SD_RECEIVE, les réceptions suivantes sur le socket ne sont pas autorisées. Cela n’a aucun effet sur les couches de protocole inférieures. Pour les sockets TCP, si des données sont toujours mises en file d’attente sur le socket en attente d’être reçues, ou si les données arrivent par la suite, la connexion est réinitialisée, car les données ne peuvent pas être remises à l’utilisateur. Pour les sockets 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é.

Si comment est SD_SEND, les envois ultérieurs sur le socket ne sont pas autorisés. Pour les sockets TCP, un FIN est envoyé. La définition de SD_BOTH désactive à la fois les envois et les réceptions, comme décrit ci-dessus.

Notez que LPWSPShutdown 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

La fonction LPWSPShutdown ne se bloque pas, quel que soit le paramètre de SO_LINGER sur le socket. Un client SPI Windows Sockets ne doit pas s’appuyer sur la possibilité de réutiliser un socket après son arrêt. En particulier, un fournisseur de services Windows Sockets n’est pas nécessaire pour prendre en charge l’utilisation de LPWSPConnect 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]
En-tête ws2spi.h

Voir aussi

LPWSPConnect

LPWSPSocket