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.
Version imprimable
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.
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
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.Code:
1
2
3
4 while(true) { select(...); }
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.
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...
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.
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.
ah oui, c'est autre chose que les sem_create() et semget()...