문제

VXWorks 5.5에 따라 UDP 멀티 캐스트를받을 수 없었습니다. 멀티 캐스트 그룹에 합류했습니다.

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

인접한 Windows 머신의 유사한 코드는 멀티 캐스트를받습니다. vxworks에서 멀티 캐스트를 보낼 수 있습니다. ifshow ()는 인터페이스가 멀티 캐스트가 가능하다는 것을 나타냅니다. MCAST_ROUTING은 커널 구성에서 활성화되어 있지만 여전히 멀티 캐스트를 수신 할 수 없습니다.

편집하다: REALTEK 이더넷 드라이브 RX 구성 레지스터에서 비트를 설정하여 멀티 캐스트를 응용 프로그램 계층으로 전달할 수 있도록해야했습니다.

#define RTL_RXCG_AM           0x04      /* Accept Multicast */
도움이 되었습니까?

해결책

Join Setsockopt () 호출에서 반환 값을 확인하여 실제로 성공했는지 확인하고 있습니까? 과거에 VXWorks 5.5에 구체적인 문제가 있었는데, 그렇지 않아야 할 때 멀티 캐스트 결합이 실패했던 과거에 특정 문제가있었습니다. 문제를 해결하기 위해 Windriver로부터 새로운 도서관을 가져와야한다고 생각합니다.

편집하다: 멀티 캐스트가 vxworks와 함께 작동하는 것을 알고있는 구체적인 트릭은 없습니다. 표준 BSD 소켓 작업을 사용해야합니다. 인터페이스가 유니 캐스트 트래픽을 올바르게 수신 할 수 있고 네트워크 분석기 (예 : Wireshark)가 멀티 캐스트 조인이 전송되고 인바운드 멀티 캐스트 패킷이 올바르게 형성됨을 보여 주면 드라이버 문제를 의심합니다. Windriver 지원은 과거에 이러한 종류의 문제로 우리에게 매우 도움이되었습니다. 그 수준의 지원을 받기 위해 그들과 지원 계약이 있는지 모르겠습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top