Domanda

Non sono stato in grado di ricevere il multicast UDP in VxWorks 5.5. Sono entrato nel gruppo multicast:

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

Il codice simile su un computer Windows adiacente riceve multicast. Sono in grado di inviare multicast da VxWorks; ifShow () indica che l'interfaccia è abilitata per multicast; MCAST_ROUTING è abilitato nella configurazione del kernel, ma non è ancora in grado di ricevere multicast.

Modifica : dovevo impostare un po 'nel registro di configurazione RX dell'unità RealTek Ethernet per consentire il passaggio del multicast al livello applicazione.

#define RTL_RXCG_AM           0x04      /* Accept Multicast */
È stato utile?

Soluzione

Stai verificando il valore restituito nella chiamata Join setsockopt () per essere sicuro che abbia effettivamente successo? Ho avuto un problema specifico con VxWorks 5.5 in passato in cui i miei join multicast fallivano quando non dovevano essere. Credo che abbiamo dovuto ottenere nuove librerie da WindRiver per risolvere il problema.

Modifica: non esiste un trucco specifico di cui sono a conoscenza per far funzionare multicast con VxWorks. Dovrebbe utilizzare le operazioni socket standard BSD. Se l'interfaccia può ricevere correttamente il traffico unicast e un analizzatore di rete (Wireshark, ad esempio) mostra che i JOIN multicast vengono inviati e che i pacchetti multicast in ingresso sono correttamente formati, sospetterei un problema con il driver. Il supporto di WindRiver è stato molto utile per noi in passato con questo tipo di problemi; Non so se hai un contratto di supporto con loro per ottenere quel livello di assistenza.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top