Si aucune erreur ne survient, Envoyer retourne le nombre total de caractères envoyé. (Notez que cela peut être inférieur au nombre indiqué par nBufLen). Sinon, la valeur SOCKET_ERROR est retournée, et un code d'erreur spécifique peut être récupéré par appeler GetLastError. Les erreurs suivantes s'appliquent à cette fonction membre:
WSA&NOTINITIALISEDnbsp ; Un succès AfxSocketInit doit se produire avant d'utiliser cette API.
WSAE&NETDOWNnbsp ; La mise en œuvre des Sockets Windows a détecté que le sous-système réseau n'a pas.
WSAEACCES  ; L'adresse demandée est une adresse de diffusion, mais l'indicateur approprié n'est pas définie.
WSAEI&NPROGRESSnbsp ; Une opération de blocage Windows Sockets est en cours.
WSAEFAULT  ; L'argument lpBuf n'est pas dans une partie valable de l'espace d'adressage utilisateur.
WSAE&NETRESETnbsp ; La connexion doit être réinitialisée, parce que la mise en œuvre de Windows Sockets a chuté, il.
WSAE&NOBUFSnbsp ; La mise en œuvre de Windows Sockets signale un blocage de la mémoire tampon.
WSAE&NOTCONNnbsp ; Le socket n'est pas connecté.
WSAE&NOTSOCKnbsp ; Le descripteur n'est pas un socket.
WSAEOP&NOTSUPPnbsp ;MSG_OOB a été spécifiée, mais le socket n'est pas de type SOCK_STREAM.
WSAESHUTDOW&Nnbsp ; Le socket a été fermé ; Il n'est pas possible d'appeler envoi sur un socket après arrêt a été invoqué avec nHow définie sur 1 ou 2.
WSAEWOULDBLOCK  ; Le socket est marqué comme non bloquant et bloquerait l'opération demandée.
WSAEMSGSIZE  ; Le socket est de type SOCK_DGRAM, et le datagramme est plus grand que le maximum pris en charge par l'implémentation Windows Sockets.
WSAEI&NVALnbsp ; Le socket n'a pas été lié avec Bind.
WSAECO&NNABORTEDnbsp ; Le circuit virtuel a été abandonné en raison de délai d'attente ou de toute autre défaillance de.
WSAECO&NNRESETnbsp ; Le circuit virtuel a été réinitialisé par le côté distant.
Paramètres
lpBuf
Une mémoire tampon contenant les données devant être transmises.
nBufLen
La longueur des données dans lpBuf en octets.
nFlags
Spécifie la manière dont l'appel est effectué. La sémantique de cette fonction est déterminée par les options de socket et le paramètre nIndicateurs . Ce dernier est construit en combinant l'une des valeurs suivantes à l'opérateur C++ ou:
MSG_DO&NTROUTEnbsp ; Spécifie que les données ne soient pas soumis à l'acheminement. Un fournisseur Windows Sockets peut choisir d'ignorer ce drapeau ; Voir aussi la discussion sur l'option SO_DONTROUTEConsidérations de programmation des Sockets Windows dans la documentation du SDK Win32.
MSG_OOB  ; Envoyer des données hors-bande (SOCK_STREAM seulement).
Remarques
Appelez cette fonction membre pour envoyer des données sur un socket connecté. Envoyer est utilisé pour écrire les données sortantes sur flux connecté ou sockets datagramme. Pour les sockets datagramme, il faut ne devant ne pas dépasser la IP paquet taille maximale des sous-réseaux sous-jacente, qui est donnée par l'élément iMaxUdpDg dans la structure WSADATA retournée par AfxSocketInit. Si les données sont trop longues pour traverser atomiquement le protocole sous-jacent, l'erreur WSAEMSGSIZE est renvoyé via GetLastError, et aucune donnée n'est transmise.
Notez que pour un datagramme de la réussite d'un envoi de socket n'indique pas que les données a été livrées avec succès.
CAsyncSocket objets de type SOCK_STREAM, le nombre d'octets écrits peut être entre 1 et la longueur demandée, selon la disponibilité de tampon sur les deux hôtes des et étrangers.