CAsyncSocket::Create
Appelez la fonction membre de Créer après avoir construit un objet socket pour créer le Winsock et le lier.
BOOL Create(
UINT nSocketPort = 0,
int nSocketType = SOCK_STREAM,
long lEvent = FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE,
LPCTSTR lpszSocketAddress = NULL
);
Paramètres
nSocketPort
Un port connu à utiliser avec un socket, ou 0 si vous souhaitez Windows Sockets pour sélectionner un port.nSocketType
SOCK_STREAM ou SOCK_DGRAM.lEvent
Un masque de bits qui spécifie une combinaison des événements de réseau dans lesquels l'application est intéressée.FD_READ souhaitent recevoir la notification de la disponibilité pour lire.
FD_WRITE souhaitent recevoir la notification de la disponibilité d'écriture.
FD_OOB souhaitent recevoir la notification de l'arrivée des données hors bande.
FD_ACCEPT souhaitent recevoir la notification des connexions entrantes.
FD_CONNECT souhaitent recevoir la notification de la connexion terminée.
FD_CLOSE souhaitent recevoir la notification de la fermeture de socket.
lpszSockAddress
Un pointeur vers une chaîne contenant l'adresse du réseau socket connecté, un nombre séparé par des points tel que « 128.56.22.8 ». Passant la chaîne de null pour ce paramètre indique l'instance de CAsyncSocket doivent écouter l'activité cliente sur toutes les interfaces réseau.
Valeur de retour
Une valeur différente de zéro si la fonction est réussie ; sinon 0, et le code d'erreur spécifique peuvent être récupérés en appelant GetLastError. Les erreurs suivantes s'appliquent à cette fonction membre :
WSANOTINITIALISED A réussi AfxSocketInit doit se produire avant d'utiliser cette API.
WSAENETDOWN que l'implémentation de Windows Sockets l'a détecté que le sous-système réseau a échoué.
WSAEAFNOSUPPORT la famille d'adresse spécifiée n'est pas pris en charge.
WSAEINPROGRESS se bloque l'exécution de Windows Sockets est en cours.
WSAEMFILE plus de modèles de fichier n'est disponible.
WSAENOBUFS aucun espace de mémoire tampon est disponible. Le socket ne peut pas être créé.
WSAEPROTONOSUPPORT le port spécifié n'est pas pris en charge.
WSAEPROTOTYPE le port spécifié est un type incorrect pour ce socket.
WSAESOCKTNOSUPPORT le type spécifié de socket n'est pas pris en charge dans cette famille d'adresses.
Notes
Créer appelle Socket et en cas de réussite, il appelle Bind pour lier un socket à l'adresse spécifiée. Les types suivants de socket sont pris en charge :
FournitSOCK_STREAM séquencé, flux d'octets fiables, bidirectionnelles simultanés, connexion- basés sur. Utilise le protocole TCP (TCP) pour la famille d'adresse Internet.
SOCK_DGRAM prend en charge les datagrammes, qui sont des paquets sans connexion et non fiables d'une longueur maximale (en général petite) fixe. Utilise le protocole UDP (UDP) pour la famille d'adresse Internet.
Notes
La fonction membre de Accepter prend une référence à un, vide objet d' CSocket comme paramètre.Vous devez construire l'objet avant d'appeler Accepter.Gardez à l'esprit que si cet objet socket hors de portée, la connexion se ferme.N'appelez pas Créer pour ce nouvel objet socket.
Important
Créer est not thread-safe.Si vous appelez-le dans un environnement multithread où il peut être appelé simultanément par plusieurs threads, soit -vous de protection chaque appel à un mutex ou tout autre verrou de synchronisation.
Pour plus d'informations sur le flux et sockets datagramme, consultez les articles Windows Sockets : Arrière-plan et Windows Sockets : Ports et adresses de socket et API Windows Sockets 2.
Configuration requise
En-tête : afxsock.h