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 :

Donné socket par event


Sujet :

Windows

  1. #1
    Membre régulier
    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
    Points : 113
    Points
    113
    Par défaut Donné socket par event
    Bonjour, je ne trouve pas de code d'exemple pour recevoir les données par socket via la boucle d'event.
    Pouvez vous me donné du code?
    Merci d'avance.
    Développeur d'Ultracopier

  2. #2
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Qu'est-ce que la boucle d'event ? Normalement, si tu parles d'event, c'est qu'il n'est plus besoin de boucle (programmation événementielle ...).

  3. #3
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par Melem Voir le message
    Qu'est-ce que la boucle d'event ? Normalement, si tu parles d'event, c'est qu'il n'est plus besoin de boucle (programmation événementielle ...).
    Ah bon? la je ne te suis plus, d'ordinaire on a truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while(true)
    {
       select(...);
    }
    Quelque soit la fonction de multiplexage, il y a toujours une boucle englobante, c'est le principe même de la programmation évenementielle. Après elle peut être caché par un framework, mais il y a forcément une boucle.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  4. #4
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Bien sûr, il y a toujours une boucle (cachée ou pas) qui sert à intercepter les différents événements qui se passent, mais il n'est nullement nécessaire de faire une boucle particulière pour intercepter un événement particulier. Par exemple, puisque nous sommes sous Windows, chaque programme comporte une "boucle de messages" (qui est pratiquement la même quelle que soit l'application) qui sert à informer la procédure de traitement d'événements de l'application de chaque événement qui survient. Ensuite, quels que soient les types d'événement qu'on veut traiter, réseau ou pas réseau, il n'y a pas d'autre boucle (comme celle que tu proposes) qu'il faudra encore écrire pour en être notifié, il suffit juste d'ajouter un traitement sur réception de l'événement en question dans la procédure de traitement d'événements.

    Pour être notifié des événements réseau, il suffit d'appeler WSAAsyncSelect.

  5. #5
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par Melem Voir le message
    Bien sûr, il y a toujours une boucle (cachée ou pas) qui sert à intercepter les différents événements qui se passent, mais il n'est nullement nécessaire de faire une boucle particulière pour intercepter un événement particulier. Par exemple, puisque nous sommes sous Windows, chaque programme comporte une "boucle de messages" (qui est pratiquement la même quelle que soit l'application) qui sert à informer la procédure de traitement d'événements de l'application de chaque événement qui survient. Ensuite, quels que soient les types d'événement qu'on veut traiter, réseau ou pas réseau, il n'y a pas d'autre boucle (comme celle que tu proposes) qu'il faudra encore écrire pour en être notifié, il suffit juste d'ajouter un traitement sur réception de l'événement en question dans la procédure de traitement d'événements.

    Pour être notifié des événements réseau, il suffit d'appeler WSAAsyncSelect.
    Juste pour info, il existe la même chose sous linux, à savoir, une seule boucle pour tout type d'évènement (réseau, fd monitoring, event, signaux, timers).
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Euh... Comment fait-on ça sous nux?

    J'ai déjà essayé sans succès, et un des plus gros reproches que je faisais à nux (et les systèmes plus ou moins POSIX en général) est qu'il n'y a pas deux objets de synchronisation qui répondent à la même fonction d'attente...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre régulier
    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
    Points : 113
    Points
    113
    Par défaut
    Sous Qt ça marche nikel, donc en api natif que ce soit sous linux ou windows ça doit marcher. Et c'est bien appeler par le thread du programme.
    Développeur d'Ultracopier

  8. #8
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Euh... Comment fait-on ça sous nux?

    J'ai déjà essayé sans succès, et un des plus gros reproches que je faisais à nux (et les systèmes plus ou moins POSIX en général) est qu'il n'y a pas deux objets de synchronisation qui répondent à la même fonction d'attente...
    pour le monitoring de fichier/repertoire : http://www.linuxcertif.com/man/7/inotify/
    pour les signaux : http://linux.die.net/man/2/signalfd
    pour les events : http://linux.die.net/man/2/eventfd
    pour les timers : http://manpages.ubuntu.com/manpages/..._create.2.html

    Bonne lecture.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  9. #9
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    ah oui, c'est autre chose que les sem_create() et semget()...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Récuperer données envoyées par un serveur socket
    Par bat2504 dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 27/05/2009, 09h09
  2. Réponses: 2
    Dernier message: 03/10/2005, 10h09
  3. Delphi Connexion à une base de donnée distante par TCP/IP
    Par viecel dans le forum Bases de données
    Réponses: 1
    Dernier message: 12/01/2005, 19h19
  4. Réponses: 5
    Dernier message: 27/12/2004, 00h38
  5. Réponses: 8
    Dernier message: 20/07/2004, 11h46

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