2

VxWorks5.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 */
4

1 に答える 1

1

Join setsockopt()呼び出しの戻り値をチェックして、実際に成功していることを確認していますか?過去にVxWorks5.5で特定の問題が発生し、マルチキャスト参加が失敗するはずのときに失敗していました。この問題を解決するには、WindRiverから新しいライブラリを入手する必要があったと思います。

編集:マルチキャストをVxWorksで動作させるために私が知っている特定のトリックはありません。標準のBSDソケット操作を使用する必要があります。インターフェイスがユニキャストトラフィックを適切に受信でき、ネットワークアナライザー(Wiresharkなど)がマルチキャストJOINが送信され、着信マルチキャストパケットが正しく形成されていることを示している場合は、ドライバーの問題が疑われます。WindRiverのサポートは、これまでこの種の問題で非常に役立ちました。そのレベルの支援を受けるために彼らとサポート契約を結んでいるかどうかはわかりません。

于 2008-09-25T16:43:09.480 に答える