Windows Sockets : notifications de socket
Cet article décrit les fonctions de notification dans les classes de chiffrement. Ces méthodes sont des fonctions de rappel que l'infrastructure appelle pour notifier l'objet socket d'événements importants. Les fonctions de notification sont :
OnReceive: Notifie le socket qu'il y a des données dans la mémoire tampon pour qu'elle les extraie en appelant Recevoir.
OnSend: Notifie le socket que vous pouvez maintenant envoyer des données en appelant Envoyer.
OnAccept: Notifie le socket qui écoute qu'il peut accepter des demandes de connections en attente en appelant Accepter.
OnConnect: Notifie le socket de la connexion que sa tentative de connection est terminée : soit correctement soit de manière erronée.
OnClose: Notifie le socket que le socket auquel il est connecté a fermé.
Notes
Une fonction de notification supplémentaire est OnOutOfBandData.Cette notification indique au socket récepteur que le socket d'émission détient des données « hors plage » à envoyer.Les données hors plage sont des canaux indépendants d'un point de vue logique et associés à chaque paire de flux de sockets connectés.Le caractère hors plage est généralement utilisé pour envoyer des données « urgentes ».MFC prend en charge les données hors bande.Les utilisateurs expérimentés qui utilisent la classe CAsyncSocket pourraient avoir besoin d'utiliser le canal hors plage, mais il est déconseillé aux utilisateurs de la classe CSocket de l'utiliser.Le moyen le plus simple consiste à créer un deuxième socket pour passer de telles données.Pour plus d'informations sur les données hors bande, consultez la spécification de protocole Windows, disponible dans Kit de développement logiciel Windows.
Si vous dérivez de la classe CAsyncSocket, vous devez substituer les fonctions de notification pour les événements de réseau qui intéressent l'application. Si vous dérivez une classe de la classe CSocket, c'est à vous de décider si vous voulez ou non remplacer les fonctions de notification d'intérêt. Vous pouvez également utiliser CSocket lui-même, auquel cas les fonctions de notification sont règlées par défaut sur "ne rien faire".
Ces fonctions sont des fonctions de rappel substituables. CAsyncSocket et CSocket convertissent les messages de notification, mais vous devez implémenter la façon dont les fonctions de notification répondent si vous souhaitez les utiliser. Les fonctions de notification sont appelées au moment où le socket est notifié d'un événement d'intérêt, tel que la présence de données à lire.
MFC appelle les fonctions de notification pour vous permettre de personnaliser le comportement de votre socket lorsqu'il est notifié. Par exemple, vous pouvez appeler Recevoir depuis votre fonction de notification OnReceive, c. - à-d., lorsqu'on vous signale qu'il existe des données à lire, vous appelez Recevoir pour les lire. Cette méthode n'est pas nécessaire, mais il s'agit d'un scénario valide. Ou bien, vous pouvez utiliser la fonction de notification pour suivre la progression, imprimer les messages de TRACE, et ainsi de suite.
Vous pouvez tirer parti de ces notifications en remplaçant les fonctions de notification dans une classe dérivée de sockets et en fournissant une implémentation.
Pendant une opération telle que recevoir ou envoyer des données, un objet CSocket devient synchrone. Pendant l'état synchrone, toutes les notifications destinées à d'autres sokets sont mises en file d'attente lorsque le socket actuel attend la notification qu'il requiert. (Par exemple, pendant un appel de Recevoir, le socket requiert une notification pour lire.) Une fois que le socket termine son opération synchrone et devient à nouveau asynchrone, d'autres sockets peuvent recevoir les notifications en file d'attente.
Notes
Dans CSocket, la fonction de notification OnConnect n'est jamais appelée.Pour les connections, vous appelez Connecter, qui retourne lorsque la connection s'est terminée (correctement ou de manière erronée).La façon dont les notifications de connection sont traitées est un ensemble d'implémentation MFC.
Pour plus d'informations sur chaque fonction de notification, consultez la fonction sous la classe CAsyncSocket dans le guide de MFC. Pour le code source et des informations sur les exemples de MFC, consultez les Exemples MFC.
Pour plus d'informations, consultez :
Windows Sockets : dérivation à partir des classes de sockets
Windows Sockets : fonctionnement des sockets avec des archives