J'ai consulté diverses documentations (.NET WinSock, c++ boost::asio) sur le multicast. L'un des problèmes que j'ai est que je ne vois pas comment vous pouvez savoir s'il existe une au moins 1 abonné à un groupe. La raison pour laquelle j'en ai besoin est qu'il n'y a pas beaucoup d'intérêt à créer les données si personne ne les écoute. Le prochain saut envoie-t-il un message sur l'état actuel de l'arbre ? Y a-t-il une sorte d'événement déclenché lorsque le premier abonné apparaît, ou lorsque le dernier part ?
Réponses
Trop de publicités?Reportez-vous à cet article sur " Comment fonctionne la multidiffusion ."
En bref, votre application n'a pas besoin de suivre les abonnements multicast ; le routeur le fait pour vous. Si vous avez des données multicast à produire, produisez-les. Le routeur se chargera de savoir si ces données sont envoyées ou non aux abonnés.
Aucun événement n'est déclenché par le routeur pour vous informer des abonnements. Si vous voulez des notifications, vous devrez intégrer cette fonctionnalité dans votre propre implémentation de protocole personnalisé et exiger que vos clients notifient explicitement l'hôte.
Vous pouvez le savoir si vous pouvez émettre un message IGMP QUERY, ou peut-être en écoutant les messages IGMP JOIN/LEAVE : vous ne recevrez jamais qu'un seul de chaque, à moins que vous ne soyez rattaché à plusieurs routeurs. Tant que le dernier message IGMP était un JOIN pour votre groupe et non un LEAVE, il y a au moins un abonné.