Windows Sockets : Dérivent des classes de sockets
Cet article décrit certaines fonctionnalités que vous pouvez gagner en dérivant votre propre classe de l'une des classes de chiffrement.
Vous pouvez dériver vos propres classes de chiffrement de CAsyncSocket ou de CSocket pour ajouter votre propre fonctionnalité. En particulier, ces classes fournissent plusieurs méthodes virtuelles que vous pouvez remplacer. Ces fonctions sont OnReceive, OnSend, OnAccept, OnConnect, et OnClose. Vous pouvez remplacer les fonctions dans la classe de sockets dérivée pour tirer parti des notifications qu'elles indiquent si les événements de réseau se produisent. L'infrastructure appelle les fonctions de rappel de notification pour vous informer des événements importants de socket, tels que la réception des données que vous pouvez commencer à lire. Pour plus d'informations sur les fonctions de notification, consultez Protocole Windows : Notifications de socket.
En outre, la classe CSocket fournit une méthode OnMessagePending (substituable avancé). MFC appelle cette fonction lorsque le socket pompe les messages Windows. Vous pouvez remplacer OnMessagePending pour rechercher des messages particuliers de Windows et répondre à ceux-ci.
La version par défaut de OnMessagePending fourni dans la classe CSocket examine la file d'attente de messages pour les messages WM_PAINT en attendant la complétion d'un appel de blocage. Elle distribue les messages de peinture pour améliorer la qualité d'affichage. A part effectuer une opération utile, il illustre une façon de remplacer la fonction vous-même. À titre d'autre exemple, envisagez d'utiliser OnMessagePending pour la tâche suivante. Supposons que vous affichez une boîte de dialogue non modale pendant l'attente d'une transaction de réseau. La boîte de dialogue contient un bouton Annuler que l'utilisateur peut utiliser pour annuler les transactions bloquantes qui prennent trop de temps. La substitution de OnMessagePending peut pomper des messages liés à cette boîte de dialogue non modale.
Dans votre substituion de OnMessagePending, retournez TRUE ou le retour d'un appel à la version de la classe de base de OnMessagePending. Appelez la version de la classe de base si elle exécute le travail que vous souhaitez effectué.
Pour plus d'informations, consultez :