est-il possible de recevoir des données de plusieurs groupes de multidiffusion sur une seule socket?
Par exemple: p> Ce code fonctionne lorsque j'ajoute un groupe de multidiffusion . Mais quand j'essaie d'ajouter une autre, la "liaison" échoue. Je ne comprends pas bien pourquoi la liaison doit être là en premier lieu? (Mais le code ne fonctionne pas sans elle). P> Idéalement, je voudrais appeler Addgroup plusieurs fois sur le même socket. Est-ce possible? Ou avez-vous besoin d'une prise par groupe, puis utilisez simplement un sondage? P> p>
6 Réponses :
Vous ne liez qu'une prise une seule fois. Passer la liaison la deuxième fois et voir ce qui se passe. p>
Vous pouvez rejoindre autant de groupes de multidiffusion que vous le souhaitez, à l'aide de l'appel SETSOCLOPTOPT () CODE> AVEC L'option IP_ADD_Membership, plutôt que de lier (). P>
Lorsque je supprimai la "liaison" des appels ultérieurs à AddGroup, seul le premier groupe de multidiffusion semble être "souscrit" à.
@Switch Si un groupe n'est pas accessible via votre itinéraire IP par défaut, vous devez spécifier l'adresse locale sortante appropriée lorsque vous rejoignez le groupe, le message IGMP «Ajouter une appartenance» passe dans la direction appropriée.
Vous ne pouvez que lier code> à l'adresse passive, c'est-à-dire 0.0.0.0 pour IPv4 et utilisez ASM ou SSM pour tirer des groupes supplémentaires, par exemple.
ip_add_membership code> comme indiqué. p>
lier code> une fois. p>
Vous pouvez rejoindre autant de groupes de multidiffusion que vous souhaitez sur une seule prise. Voir Setsockopt (), IP_PKTINFO pour un moyen de reconnaître quel groupe de multidiffusion vous lisez des données de. P>
Oui, il est possible: regardez l'exemple dans le lien ( http: //www.tenouk. com / module41c.html ) Pour raccourcir cela en quelques étapes: P>
dans OSES basée sur UNIX: P>
Si vous devez vous attacher à une adresse de multidiffusion, vous ne pouvez pas appeler Par exemple, lorsque vous avez des flux multidiffuseurs: 239.0.0.1:1234, 239.0.0.0.2:1234, 239.0.0.0.3:1234 et 239.0.0.4:1234, et vous souhaitez recevoir 239.0.0.1, 239.0.0.2 en cours de processus -A et souhaitez recevoir 239.0.0.3, 239.0.0.4 en process-b, vous ne pouvez pas y accomplir lorsque les deux traitements A et B fonctionnent dans le même dispositif. P> Bind () code> plus d'une fois. Et vous devrez vous attacher à une adresse de multidiffusion lorsque vous vous attendez à plus d'un flux de multidiffusion utilisant le même port de destination et plusieurs processus fonctionnant dans le même dispositif recevant ces multidiffests. P>