IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[2.0][C#][DCOM] Client voulant s'abonner à un événement du serveur


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut [2.0][C#][DCOM] Client voulant s'abonner à un événement du serveur
    Bonsoir,


    pour infos, je suis débutant en techno windows... donc il se peut que je pose des questions bêtes (désolé )


    je travaille sur un projet en DCOM.
    le serveur en fait en C++, et les clients sont en C#

    je veux y intégrer un système de messagerie... je suis donc forcé de faire de l'événementiel (là où j'aurais d'ordinaire joué avec des sockets + select )

    en gros, le serveur ne connait rien des clients, donc je pense qu'il faut qu'il est un événement, et que les clients "branchent leur capteur" sur cet événement


    j'ai regardé des exemples, mais vu que l'objet est un attribut de la classe client, je ne vois que des méthodes qui considère qu'on doit dès la création penser à modifier la méthode pour qu'il appelle les événements de la classe d'au-dessus qu'on lui a passer en argument... et en DCOM, je ne vois pas trop comment m'y prendre


    j'espère avoir été clair...
    merci à tous ceux qui prendront un peu de temps pour lire mon post, et un grand merci à ceux qui y répondront
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  2. #2
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut
    je crois avoir trouvé de quoi me sauver http://www.harding.edu/USER/fmccown/...omparison.html

    merci à bidou pour m'avoir dit comment on fait en VB (WithEvents)
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  3. #3
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut
    j'ai essayé cela... mais en vain

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    namespace Client
    {
        delegate void newMessageHandler(String str);
     
        public partial class Form1 : Form
        {
            //event newMessageHandler newMessage;
            //protected Object server;
            protected ServerLib.Chat server;
     
            private void cmdLaunch_Click(object sender, EventArgs e)
            {
    // ...
                try
                {
                    server = new ServerLib.Chat();
                    /*
                    Type t = Type.GetTypeFromProgID("Server.Chat", serverAddress);
                    server = Activator.CreateInstance(t);
                     * */
                    server.registerClient(login);
                    server.newMessage += new newMessageHandler(addNewMessage);
                } 
                catch (Exception ex)
                {
                    MessageBox.Show("Impossible de se connecter \n" + ex.Message,"Erreur");
                    return;
                }
            }
     
            private void addNewMessage(String str)
            {
                txtHistory.AppendText(str);
            }
        }
    }


    sachant que je me prends l'erreur suivante...

    Cannot implicitly convert type 'Client.newMessageHandler' to 'ServerLib._IChatEvents_newMessageEventHandler'
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  4. #4
    Membre éclairé
    Inscrit en
    Août 2006
    Messages
    381
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 381
    Par défaut
    Bonsoir,

    J'ai un peu de DCOM, je vais essayer de t'aider.
    ton serveur DCOM propose donc un évenement.
    Tu utilises Visual Studio ?
    Je suppose que tu as wrappé ton composant DCOM et VS t'as ainsi crée un joli wrapper.
    Ensuite quand tu écries:

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    server.newMessage +=

    il te propose d'appuyez sur Tabulation pour générer le délégué automatiquement.
    Et il VS te crée alors:

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void addNewMessage(String str)
            {
                txtHistory.AppendText(str);
            }

    Je suis assez surpris du paramètre String, ne serait-ce pas toi qui l'as mis ?
    Je pense que ce paramètre devrait être object, mais c'est à vérifier.
    Quelle est la signature de l'évenement wrappé par VS ?

    Dis moi quoi.

    Bye

  5. #5
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut
    ben non, c'est du cousu main sous Visual Studio...


    en gros, j'ai créé mon composant DCOM avec le wizard, et modifier l'idl avec le wizard... mais j'ai du quelques manip à la main :
    - l'insertion de l'événement dans le .idl
    - la création de l'événement

    puis, j'ai créé le projet C# pour le client dans la même solution, j'ai ajouté la référence vers mon composant via le wizard... mais j'ai joué à la main pour la capture de l'événement du dit-composant


    voilà, j'espère avoir été clair

    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  6. #6
    Membre éclairé
    Inscrit en
    Août 2006
    Messages
    381
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 381
    Par défaut
    Et newMessage est de type newMessageHandler ?
    Je suis assez surpris que tu déclares ton Delegate ici.
    Normalement, tu n'as pas à le déclarer, c VS qui le fait quand il wrap ton composant DCOM.
    Dans ton projet C#, je suppose que tu as une classe Server déclaré dans Server.cs

    Pourrais-tu donner la déclaration de l'évenement newMessage ?

    Merci d'avance.

Discussions similaires

  1. Superviseur, client OPC et DCOM
    Par Avatar dans le forum Automation
    Réponses: 7
    Dernier message: 01/08/2017, 09h25
  2. Récupérer l'adresse IP du client en DCOM
    Par onionichan dans le forum Visual C++
    Réponses: 1
    Dernier message: 08/11/2006, 10h48
  3. Outils pour client voulant acceder à une bdd firebird
    Par Shellai-93 dans le forum Débuter
    Réponses: 6
    Dernier message: 29/08/2006, 08h50
  4. [paiement en ligne] abonnement,donner confiance au client ?
    Par FoxDeltaSierra dans le forum E-Commerce
    Réponses: 4
    Dernier message: 30/11/2005, 14h41
  5. Client-Serveur Dcom = Client+Serveur lancés sur la machine ?
    Par Jilam dans le forum Bases de données
    Réponses: 6
    Dernier message: 27/07/2004, 14h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo