0

マルチキャスト グループに参加するために、私は次のようなコードを目にすることに慣れています。

struct ip_mreqn mreq;
mreq.im_address.s_addr = INADDR_ANY
mreq.imr_ifindex = 0;

inet_aton("232.etc..", $mreq.imr_multiaddr);
setsockopt(descriptor, SOL_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq));

現在、誰かがこれは v2 igmp 参加要求であり、v3 が必要であると言っているという問題に直面しています。これは上記のコードで対処する必要があるものですか、それとも上記のようなコードを実行しているホストのハードウェア/ネットワーク/OS の問題ですか? 上記のコードが間違っている場合、どのような手順で修正できますか?

4

2 に答える 2

0

現在、誰かがこれは v2 igmp 参加要求であり、v3 が必要であると言っているという問題に直面しています。

現時点では、有効なマルチキャスト グループを指定していないため、有効な参加要求ではありません。INADDR_ANY はマルチキャスト グループではなく、厳密にはバインド アドレスです。マルチキャスト グループは 224.0.0.0 から始まりますが、この用途に適しており、利用可能なものを必ず選択してください。

この権利を取得したときに関与するプロトコルが V2 であるか V3 であるかは、このコードの影響を受けません。これは、呼び出したときに UDP プロトコル スタックが何を行うかに依存します。あなたはそれを制御することはできません。「誰か」がIGMP V3を必要とする理由もわかりません。

于 2013-07-23T00:53:48.527 に答える