les joies de l'udp [C] - C - Programmation
Marsh Posté le 26-09-2003 à 13:11:54
Multithreade et rend tes sockets non bloquants avec FD_SET
Marsh Posté le 26-09-2003 à 13:54:45
ok pour le multithread, qqun aurait de la bonne doc? le fork ça serait pas une bonne alternative? ça a lair plus simple
ensuite pour select() jy ai jamais rien compris c pas en gros pour savoir si qqchose est arrivé parmis plusieurs socket? la jen ai qu'une seul et en udp alors jsais pas. jveu bien essayer mais la je patoge
Marsh Posté le 26-09-2003 à 15:04:16
ba le fork ca te donne tu multithread vu que tu ajoutes un process pour coordiner l'action de ton process père...
genre tu fork et le process fils recoit les réponses udp et les communiques au process père par des signaux
Marsh Posté le 28-09-2003 à 09:41:54
ouai jvais voir en forkant
mais c'est que je minteressais au thread un peu (pthread etc) mais jmen vraiment de doc genre comment communiquer entre les threads etc
Marsh Posté le 28-09-2003 à 10:16:00
[Madko] a écrit : comment communiquer entre les threads etc |
La différence entre processus (fork) et threads (pthread_machin) :
Si tu n'as pas envie de te prendre la tête et que tu n'as pas de grosse concurrence intrinsèque, le select() avec une seule tâche, c'est le mieux, car rentrer dans la concurrence, c'est rentrer dans le merveilleux monde des bugs de synchronisation.
Marsh Posté le 26-09-2003 à 12:34:28
voila j'ai un appli en C qui envoie une requete udp en broadcast, jusque la pas de probleme. mais pour la reception je bloque un peu. c'est presque + de l'algo qu'autre chose mais jy connais rien en prog rezo
donc pour la reception le probleme c'est que je peux tres bien avoir entre 0 et xxx réponses. j'envoie ma requete udp et tout les postes succeptible d'y repondre le font. donc j'ai vraiment aucun moyen de savoir combien de reponse je vais avoir.
Alors je bloque sur le fait que des que je lis sur le socket pour voir si jai une reponse, ça bloque tout. si jai qqchose ça passe tout de suite c'est bon, mais sinon je dois attendre un timeout. si je me 2s pour le timeout c'est sympa, mais 2s par lecture du socket ça devient vite lent.
alors ya tils une methode genre non bloquante pour les sockets udp? dois-je forcement utiliser un thread ou un fork pour ecouter en permanance?
juste histoire d'avoir vos avis
c'est pour un soft qui detecte les serveurs de jeux en lan, genre counter etc pour leur faire la peau