Détecter la fin de réception en UDP

Détecter la fin de réception en UDP - C++ - Programmation

Marsh Posté le 10-01-2008 à 12:09:40    

Bonjour,
 
Je souhaite réaliser une application qui permette de détecter des composants réseaux présents sur le réseau local. Ces composants ont un fonctionnement sympatique qui consiste à répondre aux trames UDP en broadcast sur un port donné par une trame de retour à l'émetteur.
 
Mon programme actuellement réussi à envoyer les trames UDP sur le port (je vérifie ça grâce à Wireshark) qui sont correctement répondues.
Malheureusement, je n'arrive pas à faire de recvfrom() "en chaîne" jusque tous les composants aient eu le temps de répondre (en gros, j'arrive à capturer le premier).
 
Avez-vous une idée ?
Merci d'avance !

Message cité 1 fois
Message édité par ChPortos59 le 10-01-2008 à 12:14:23
Reply

Marsh Posté le 10-01-2008 à 12:09:40   

Reply

Marsh Posté le 10-01-2008 à 17:36:00    

ChPortos59 a écrit :

Bonjour,
 
Je souhaite réaliser une application qui permette de détecter des composants réseaux présents sur le réseau local. Ces composants ont un fonctionnement sympatique qui consiste à répondre aux trames UDP en broadcast sur un port donné par une trame de retour à l'émetteur.
 
Mon programme actuellement réussi à envoyer les trames UDP sur le port (je vérifie ça grâce à Wireshark) qui sont correctement répondues.
Malheureusement, je n'arrive pas à faire de recvfrom() "en chaîne" jusque tous les composants aient eu le temps de répondre (en gros, j'arrive à capturer le premier).
 
Avez-vous une idée ?
Merci d'avance !


 
Bon, et bien j'ai trouvé un moyen.
Grâce à select(), j'ai mis un timeout d'1s, ce qui me laisse 1s pour que les composants répondent (énorme en temps informatique, non ?)
Par contre le problème, c'est que je bloque l'appli pendant cette seconde (d'où le fait que j'ai mis 1s, et pas 5s, ce qui est plus visible en temps de "freeze" ). Y aurait-il une autre solution ?

Reply

Marsh Posté le 10-01-2008 à 18:28:05    

threads?


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
Reply

Marsh Posté le 10-01-2008 à 18:46:57    

ChPortos59 a écrit :


 
Bon, et bien j'ai trouvé un moyen.
Grâce à select(), j'ai mis un timeout d'1s, ce qui me laisse 1s pour que les composants répondent (énorme en temps informatique, non ?)
Par contre le problème, c'est que je bloque l'appli pendant cette seconde (d'où le fait que j'ai mis 1s, et pas 5s, ce qui est plus visible en temps de "freeze" ). Y aurait-il une autre solution ?


déjà utilise poll au moins, c'est quand meme plus confortable à utiliser que select.
 
Après non, pas besoin de threads. Plutot que de bloquer ton appli 1s, tu peux faire des select beaucoup plus courts, et si au bout d'un temps donnée t'as toujours rien reçu, tu contines.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed