Question

Je n'ai pas pu recevoir la multidiffusion UDP sous VxWorks 5.5. J'ai rejoint le groupe de multidiffusion:

setsockopt(soc, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *) &ipMreq, sizeof (ipMreq));

Un code similaire sur une machine Windows adjacente reçoit une multidiffusion. Je peux envoyer le multicast de VxWorks; ifShow () indique que l'interface est compatible avec la multidiffusion; MCAST_ROUTING est activé dans la configuration du noyau, mais ne peut toujours pas recevoir de multidiffusion.

Modifier : je devais définir un bit dans le registre de configuration de l'unité RealTek Ethernet RX afin de permettre à la multidiffusion d'être transmise à la couche application.

#define RTL_RXCG_AM           0x04      /* Accept Multicast */
Était-ce utile?

La solution

Vérifiez-vous la valeur de retour de l'appel Join pour vous assurer que l'opération réussit? J'ai eu un problème spécifique avec VxWorks 5.5 dans le passé où mes jointures de multidiffusion échouaient alors qu'elles ne devraient pas l'être. Je pense que nous avons dû faire appel à de nouvelles bibliothèques de WindRiver pour résoudre le problème.

Modifier: À ma connaissance, il n’existe aucune astuce permettant de faire fonctionner la multidiffusion avec VxWorks. Il devrait utiliser les opérations standard des sockets BSD. Si l'interface peut recevoir correctement le trafic de monodiffusion et qu'un analyseur de réseau (Wireshark, par exemple) indique que les jointures de multidiffusion sont en cours d'envoi et que les paquets de multidiffusion entrants sont correctement formés, je suspecterais un problème de pilote. L’assistance WindRiver nous a été très utile dans le passé avec ce genre de problèmes; Je ne sais pas si vous avez un contrat d'assistance avec eux pour obtenir ce niveau d'assistance.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top