[C++][Socket] Evenement asynchrone
Résolu
rosewood
-
rosewood Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
rosewood Messages postés 1 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai créé une class CClientSocket pour gérer les communications par socket du côté client. Cette class permet de se connecter, d'effectuer des requêtes (via un timer qui va lire une pile de messages) et de traiter les répones du serveur aux requêtes.
Auparavant, j'avais également une class de type CDialog qui me servait d'interface graphique. La class CClientSocket envoyait un message AFX (avec les données associées) à la class CDialog lorsque l'on avait recu une reponse du serveur.
Aujourd'hui, au lieu de la class CDialog, j'utilise une autre class qui va me servir d'interface avec une autre application. J'aimerai en fait que CClientSocket previenne cette nouvelle class lorsque l'on recoit une reponse du serveur.
Comment peut-on envoyer un evenement aynchrone à cette nouvelle class (via une callback peut être ?) pour la prevenir de la reception d'une reponse (avec ses données associées) ? (comment met on en place un système de callback appelé sur évenement ?)
J'aimerai en fait éviter que la class d'interface n'ai à scruter un buffer périodiquement (ce que fait deja la class CClientSocket).
Merci d'avance pour votre aide.
J'ai créé une class CClientSocket pour gérer les communications par socket du côté client. Cette class permet de se connecter, d'effectuer des requêtes (via un timer qui va lire une pile de messages) et de traiter les répones du serveur aux requêtes.
Auparavant, j'avais également une class de type CDialog qui me servait d'interface graphique. La class CClientSocket envoyait un message AFX (avec les données associées) à la class CDialog lorsque l'on avait recu une reponse du serveur.
Aujourd'hui, au lieu de la class CDialog, j'utilise une autre class qui va me servir d'interface avec une autre application. J'aimerai en fait que CClientSocket previenne cette nouvelle class lorsque l'on recoit une reponse du serveur.
Comment peut-on envoyer un evenement aynchrone à cette nouvelle class (via une callback peut être ?) pour la prevenir de la reception d'une reponse (avec ses données associées) ? (comment met on en place un système de callback appelé sur évenement ?)
J'aimerai en fait éviter que la class d'interface n'ai à scruter un buffer périodiquement (ce que fait deja la class CClientSocket).
Merci d'avance pour votre aide.
A voir également:
- [C++][Socket] Evenement asynchrone
- Evenement whatsapp - Accueil - WhatsApp
- Carte mere socket 1155 ✓ - Forum Carte-mère/mémoire
- Un evenement inattendu s'est produit league of legends - Forum Jeux PC
- Vous allez pouvoir organiser des événements au sein des groupes WhatsApp - Accueil - Messagerie instantanée
- Problème de connexion league of legend ✓ - Forum jeux en ligne
2 réponses
Je fairait une chose assez proche des listener en Java:
Bien sur tu adaptes à ton problème
class Receveur{ public: void recevoirEvenement(){ // faire quelque chose } }; class Emetteur{ public: void AjouterReceveur(Receveur receveur){ // ajouter le receveur à une liste } // Dans une fonction quelquonque : receveur.recevoirEvenement(); };
Bien sur tu adaptes à ton problème
Dans mon cas, la class CClientSocket (Emetteur) se situe dans la class Interface (Receveur):
Class CInterface:
{
public:
CClientSocket socket;
void RequestInfoType1() { socket.request() }
void ReceiveInfoType1();
}
Class CClientSocket
{
public:
void request();
void receive();
}
J'utilise la class CClientSocket pour envoyer mes requêtes mais pour recevoir la reponse, je ne sais pas comment faire le lien entre receive (CClientSocket) et ReceiveInfoType1(Interface).
Est ce qu'une class interne peut appeler une methode de la class externe ?
Class CInterface:
{
public:
CClientSocket socket;
void RequestInfoType1() { socket.request() }
void ReceiveInfoType1();
}
Class CClientSocket
{
public:
void request();
void receive();
}
J'utilise la class CClientSocket pour envoyer mes requêtes mais pour recevoir la reponse, je ne sais pas comment faire le lien entre receive (CClientSocket) et ReceiveInfoType1(Interface).
Est ce qu'une class interne peut appeler une methode de la class externe ?