Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Sockets UDP et multicast

1 réponse
Avatar
JKB
Bonjour à tous,

J'essaie de faire tourner un bout de programme qui embarque un
serveur multicast. L'idée est de lire un flux UDP/unicast d'une
caméra et de le balancer en multicast. La caméra fait bien du
multicast mais il est impossible de l'utiliser directement pour une
raison trop compliquée à expliquer ici.

J'ai donc créé une socket réseau à l'aide de winsock2.0, affecté les
adresses locales et distantes (INADDR_ANY), le port en question et
joint le group de diffusion multicast. Tout se passe normalement. Je
précise que j'ai une certaine connaissance des sockets BSD et que
mon problème ne se situe pas dans le code lui-même.

Et mon programme envoie des paquets sur le réseau. Le problème est
que les paquets qui sont envoyés sur l'adresse 224.16.1.1, donc en
multicast (et taggués comme tels, j'ai vérifié avec un sniffeur de
réseau) sont en fait envoyés en broadcast ! Je pollue donc tout le
réseau.

Avec ou sans client, le serveur envoie vers toutes les machines ses
trames multicast. Pourtant, le multicast stipule que le récepteur
doit s'inscrire avec une trame IGMP pour recevoir le flux.

Le même programme fonctionne parfaitement sous NetBSD. Le problème
vient certainement d'un problème de configuration quelque part, mais
je ne vois pas bien où. Une idée ? Pour information, je suis
actuellement avec un W7 ultimate 64 bits à jour et le compilo est un
Visual C++ 2010.

Cordialement,

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr

1 réponse

Avatar
JKB
Le Mon, 7 Feb 2011 13:42:07 +0000 (UTC),
JKB écrivait :
Bonjour à tous,

J'essaie de faire tourner un bout de programme qui embarque un
serveur multicast. L'idée est de lire un flux UDP/unicast d'une
caméra et de le balancer en multicast. La caméra fait bien du
multicast mais il est impossible de l'utiliser directement pour une
raison trop compliquée à expliquer ici.

J'ai donc créé une socket réseau à l'aide de winsock2.0, affecté les
adresses locales et distantes (INADDR_ANY), le port en question et
joint le group de diffusion multicast. Tout se passe normalement. Je
précise que j'ai une certaine connaissance des sockets BSD et que
mon problème ne se situe pas dans le code lui-même.

Et mon programme envoie des paquets sur le réseau. Le problème est
que les paquets qui sont envoyés sur l'adresse 224.16.1.1, donc en
multicast (et taggués comme tels, j'ai vérifié avec un sniffeur de
réseau) sont en fait envoyés en broadcast ! Je pollue donc tout le
réseau.

Avec ou sans client, le serveur envoie vers toutes les machines ses
trames multicast. Pourtant, le multicast stipule que le récepteur
doit s'inscrire avec une trame IGMP pour recevoir le flux.

Le même programme fonctionne parfaitement sous NetBSD. Le problème
vient certainement d'un problème de configuration quelque part, mais
je ne vois pas bien où. Une idée ? Pour information, je suis
actuellement avec un W7 ultimate 64 bits à jour et le compilo est un
Visual C++ 2010.



Je me réponds à moi-même. Le même exécutable fonctionne parfaitement
sous Windows 2008R2. Conclusion ?... ;-)

JKB

--
Si votre demande me parvient sur carte perforée, je titiouaillerai très
volontiers une réponse...
=> http://grincheux.de-charybde-en-scylla.fr