Détecter la fin de réception en UDP - C++ - Programmation
Marsh Posté le 10-01-2008 à 17:36:00
ChPortos59 a écrit : Bonjour, |
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 ?
Marsh Posté le 10-01-2008 à 18:28:05
threads?
Marsh Posté le 10-01-2008 à 18:46:57
ChPortos59 a écrit : |
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.
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 édité par ChPortos59 le 10-01-2008 à 12:14:23