Windows Sockets : dérivation à partir des classes de sockets
Cet article décrit certaines des fonctionnalités que vous pouvez obtenir en dérivant votre propre classe à partir de l’une des classes de socket.
Vous pouvez dériver vos propres classes de socket à partir de CAsyncSocket ou de CSocket pour ajouter vos propres fonctionnalités. En particulier, ces classes fournissent un certain nombre de fonctions membres virtuelles que vous pouvez remplacer. Ces fonctions incluent OnReceive, OnSend, OnAccept, On Connecter et OnClose. Vous pouvez remplacer les fonctions de votre classe de socket dérivée pour tirer parti des notifications qu’elles fournissent lorsque des événements réseau se produisent. L’infrastructure appelle ces fonctions de rappel de notification pour vous informer des événements de socket importants, tels que la réception des données que vous pouvez commencer à lire. Pour plus d’informations sur les fonctions de notification, consultez Windows Sockets : Notifications de socket.
En outre, la classe CSocket
fournit la fonction membre OnMessagePending (substituable avancée). MFC appelle cette fonction pendant que le socket pompe les messages Windows. Vous pouvez remplacer OnMessagePending
pour rechercher des messages particuliers à partir de Windows et y répondre.
La version OnMessagePending
par défaut fournie dans la classe CSocket
examine la file d’attente de messages pour WM_PAINT messages en attendant la fin d’un appel bloquant. Il distribue des messages de peinture pour améliorer la qualité de l’affichage. En plus de faire quelque chose d’utile, cela illustre une façon de remplacer la fonction vous-même. Comme autre exemple, envisagez d’utiliser OnMessagePending
pour la tâche suivante. Supposons que vous affichez une boîte de dialogue sans mode en attendant la fin d’une transaction 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. Votre OnMessagePending
remplacement peut pomper des messages liés à cette boîte de dialogue sans mode.
Dans votre OnMessagePending
remplacement, retournez TRUE ou le retour d’un appel à la version de classe de base de OnMessagePending
. Appelez la version de classe de base si elle effectue le travail que vous souhaitez toujours effectuer.
Pour en savoir plus, consultez :