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

Windows Discussion :

Event de nouvelle connexion pour pipe nommé


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de alpha_one_x86
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Par défaut Event de nouvelle connexion pour pipe nommé
    Bonjour, je suis parti de l'exemple:
    http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
    Vu que j'ai la boucle d'event autre par (programme Qt), j'ai essayer de le faire sans cette mini boucle d'event:
    http://pastebin.com/h4MT9YZA
    Hors la nouvelle connexion de quelqu'un n'est jamais détecté!
    Et donc les functions de traitement des données ne sont jamais connecté.

    Je ne sais pas comment le faire. J'ai besoin pour chaque logiciel connecté sur le pipe nommé, de communiquer juste avec lui dans le protocol spécifique.
    Merci d'avance de votre aide.

  2. #2
    Membre éclairé
    Avatar de alpha_one_x86
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Par défaut
    Il doit y avoir un moyen de chopper un event sans avoir accés à la boucle d'event, si non ca veut dire qu'aucun plugin ne peu utilisé les events

  3. #3
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 937
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 937
    Par défaut
    Si la "mini boucle" à laquelle tu fais référence est while (1), celle-ci est obligatoire, sinon tu n'auras qu'une connexion puis plus rien...

    L'event devrait être nommé pour pouvoir le partager entre application. Mais celui-ci est utilisé pour la synchro interne du serveur et je ne vois pas trop pourquoi tu veux le partager

  4. #4
    Membre éclairé
    Avatar de alpha_one_x86
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Par défaut
    Sauf que ce while pour maintenir le main() ouvert pour pas que le programme ce refait, est déjà fait autre part. (dans un programme Qt c'est QCoreApplication)
    Et donc ça fait un comportement bloquant qui est génant ici.

    L'event en lui même ne doit pas étre partagé.

    Voila le code en Qt:
    http://pastebin.com/5nCNnc1x
    Que j'essaye de refaire en C.

    Je ne sais pas refaire la ligne 139, mais tout le reste du code marche.

  5. #5
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 937
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 937
    Par défaut
    Un serveur NamedPipe mono-thread ne veut pas dire que tu peux simplement ajouter sa gestion à ta tâche principale. Il doit tout de même être dans une tâche secondaire
    Cette boucle n'a rien à voir avec la boucle de messages de l'application !

    Perso je préfère travailler en multi-thread, mais dans les deux cas, il y a une tâche dédiée à la gestion des connexions.

    En mono, elle se charge de tout; connexion et communication avec les clients. Une queue de demandes est remplie et son remplissage/vidage est synchronisé par event (ConnectNamedPipe n'est pas bloquant) alors qu'en multi, ConnectNamedPipe est bloquant, mais un nouveau thread est créé pour chaque client.

  6. #6
    Membre éclairé
    Avatar de alpha_one_x86
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2006
    Messages : 411
    Par défaut
    Donc ça serai un serveur NamedPipe mono-thread qu'il me faudrai. Mais j'y suis pas pas arrivé. (voir code en haut)

    J'arrive pas à overlapped l'event pour appeller une function à la connexion d'un clients (et tout le reste je sais encore moins comment ça marche)

Discussions similaires

  1. Réponses: 4
    Dernier message: 09/04/2010, 10h42
  2. Creer une nouvelle référence pour le driver ODBC
    Par tripper.dim dans le forum Connexion aux bases de données
    Réponses: 3
    Dernier message: 04/01/2005, 22h57
  3. Réponses: 3
    Dernier message: 16/03/2004, 16h42
  4. Réponses: 2
    Dernier message: 31/08/2002, 21h37

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