Windows Sockets : notifications de socket
Cet article décrit les fonctions de notification dans les classes de socket. Ces fonctions membres sont des fonctions de rappel que l’infrastructure appelle pour notifier votre objet socket d’événements importants. Les fonctions de notification sont les suivantes :
OnReceive : avertit ce socket qu’il existe des données dans la mémoire tampon pour qu’elle soit récupérée en appelant Receive.
OnSend : avertit ce socket qu’il peut désormais envoyer des données en appelant Send.
OnAccept : avertit ce socket d’écoute qu’il peut accepter les demandes de connexion en attente en appelant Accept.
Activé Connecter : avertit ce socket de connexion que sa tentative de connexion s’est terminée : peut-être correctement ou peut-être en erreur.
OnClose : avertit ce socket que le socket auquel il est connecté est fermé.
Remarque
Une fonction de notification supplémentaire est OnOutOfBandData. Cette notification indique au socket de réception que le socket d’envoi a des données « hors bande » à envoyer. Les données hors bande sont un canal indépendant logiquement associé à chaque paire de sockets de flux connectés. Le canal hors bande est généralement utilisé pour envoyer des données « urgentes ». MFC prend en charge les données hors bande. Les utilisateurs avancés travaillant avec la classe CAsyncSocket peuvent avoir besoin d’utiliser le canal hors bande, mais les utilisateurs de la classe CSocket sont déconseillés de l’utiliser. La façon la plus simple consiste à créer un deuxième socket pour transmettre ces données. Pour plus d’informations sur les données hors bande, consultez la spécification windows Sockets, disponible dans le Kit de développement logiciel (SDK) Windows.
Si vous dérivez de la classe CAsyncSocket
, vous devez remplacer les fonctions de notification pour ces événements réseau qui intéressent votre application. Si vous dérivez une classe de la classe CSocket
, il s’agit de votre choix de remplacer les fonctions de notification d’intérêt. Vous pouvez également l’utiliser CSocket
lui-même, auquel cas les fonctions de notification ne font rien par défaut.
Ces fonctions sont des fonctions de rappel substituables. CAsyncSocket
et CSocket
convertissez des messages en notifications, 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ù votre socket est averti 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 au moment où il est averti. Par exemple, vous pouvez appeler Receive
à partir de votre OnReceive
fonction de notification, c’est-à-dire en étant averti qu’il existe des données à lire, vous appelez Receive
pour la lire. Cette approche n’est pas nécessaire, mais il s’agit d’un scénario valide. En guise d’alternative, vous pouvez utiliser votre fonction de notification pour suivre la progression, imprimer les messages TRACE , et ainsi de suite.
Vous pouvez tirer parti de ces notifications en remplaçant les fonctions de notification dans une classe de socket dérivée et en fournissant une implémentation.
Pendant une opération telle que la réception ou l’envoi de données, un CSocket
objet devient synchrone. Pendant l’état synchrone, toutes les notifications destinées à d’autres sockets sont mises en file d’attente pendant que le socket actuel attend la notification souhaitée. (Par exemple, lors d’un Receive
appel, le socket souhaite lire une notification.) Une fois que le socket a terminé son opération synchrone et redevient asynchrone, d’autres sockets peuvent commencer à recevoir les notifications mises en file d’attente.
Remarque
Dans CSocket
, la OnConnect
fonction de notification n’est jamais appelée. Pour les connexions, vous appelez Connect
, qui retourne une fois la connexion terminée (avec succès ou en erreur). La façon dont les notifications de connexion sont gérées est un détail d’implémentation MFC.
Pour plus d’informations sur chaque fonction de notification, consultez la fonction sous classe CAsyncSocket
dans la référence MFC. Pour obtenir du code source et des informations sur les exemples MFC, consultez exemples MFC.
Pour en savoir plus, consultez :
Windows Sockets : dérivation à partir des classes de sockets
Windows Sockets : fonctionnement des sockets avec des archives