Je suis en train de concevoir un serveur qui est utilisé dans la communication UDP en utilisant MFC. Je les classes suivantesMa conception pour le serveur socket UDP est-elle correcte?
- CMyDlialog - Prenez soin de l'interface utilisateur
- CController - Agir en tant que médiateur entre toutes les classes
- CProtocolManager - Prenez soin de codage/décodage msgs (Ceci est une classe statique)
- CConnectionManager - Prenez soin de connexion UDP, envoi, réception
Je crée un objet de CConnectionManager comme une variable membre dans CController et objet de CController comme variable membre dans CMyDialog.
Lorsque l'utilisateur tape quelque chose et appuie sur envoyer, j'appelle une méthode dans CControler qui appelle une méthode dans CProtocolManager pour construire le paquet et appelle la méthode CConnectionManager pour l'envoyer.
Lorsque je reçois des données, elles sont gérées dans un thread de CConnectionManager. Là je crée un objet local de CController et appelle une méthode, qui passera les données à CProtocolManager pour décoder.
Maintenant, je tiens à informer l'interface utilisateur sur les données, comment devrait le CControler le faire? Je peux poster un message à l'interface utilisateur en rendant le handle de dialogue principal global, est-ce une approche correcte.
Dites-moi également si ce design est correct.
Merci à l'avance
Donc, je devrais passer le AbstractMessageReceiver * à la fonction de thread qui reçoit les données et passer cela au contrôleur qui appellera la méthode actuelle de recieve? – Jeeva
vous pourriez le faire, mais je me demande si vous avez vraiment besoin de créer un contrôleur local ou si vous pouvez simplement passer votre contrôleur existant au gestionnaire de connexion? Ensuite, vous pouvez passer le AbstractMessageReceiver au contrôleur et le gestionnaire de connexion n'a pas à s'inquiéter à ce sujet. – Philipp