Bonjour,
Le fichier main.c permet d'envoyer et de recevoir des paquets multicasts sur des interfaces spécifiques. C'est à dire 128.127.58.113 pour la réception et 128.127.58.112 pour l'émission.
L'émission se fait sur Windows XP ( 128.127.58.112) et la réception sous Linux (128.127.58.113).
Lorsque je ne défini pas USE_RECV_ADDR, ce test fonctionne correctement mais ce n'est pas ce que je veux (il faut que le bind() soit fait sur une adresse valide et non sur toutes).
Si je défini USE_RECV_ADDR, le message n'est pas reçu (aucun paquet multicast ne remonte dans la couche applicative) pourtant, le paquet est bien visible dans wireshark.
Ce test (main.c) ne fonctionne pas sous Linux (ubuntu 10.4) et je ne sais pas pourquoi (Lorsque j'utilise ce test entre 2 windows, ça fonctionne très bien. C'est à dire USE_RECV_ADDR défini).
Sous windows, il est possible de faire un bind() sur l'IP locale puis de faire du multicast sans problème par contre, sous Linux, ça ne marche pas et je ne comprends pas pourquoi. J'ai regardé les pages de man mais, ... rien.
Quelqu'un a t'il une solution à me proposer ?
Merci d'avance,
Cyril
Partager