3

マルチキャストに関するさまざまなドキュメント (.NET WinSock、c++ boost::asio) を調べてきました。私が抱えている問題の 1 つは、グループに少なくとも 1 人のサブスクライバーがいるかどうかを知る方法がわからないことです。私がそれを必要とする理由は、誰も聞いていなければデータを作成してもあまり意味がないからです。ツリーの現在のステータスについて、ネクスト ホップから送り返されたメッセージはありますか? 最初のサブスクライバーが現れたとき、または最後のサブスクライバーが去ったときにトリガーされる何らかのイベントはありますか?

4

2 に答える 2

4

「マルチキャストのしくみ」に関するこの記事を参照してください。

つまり、アプリケーションはマルチキャスト サブスクリプションを追跡する必要はありません。ルーターがそれを行います。生成するマルチキャスト データがある場合は、それを生成します。ルーターは、そのデータが加入者に送信されるかどうかを処理します。

サブスクリプションを通知するためにルーターによって発生するイベントはありません。何らかの通知が必要な場合は、その機能を独自のカスタム プロトコル実装に組み込む必要があり、クライアントが明示的にホストに通知する必要があります。

于 2013-02-12T20:01:01.347 に答える
1

IGMP QUERY メッセージを発行できる場合、または IGMP JOIN/LEAVE メッセージをリッスンすることで、複数のルーターに接続していない限り、それぞれ 1 つしか取得できないことがわかります。最後の IGMP メッセージがグループの JOIN であり、LEAVE ではない限り、少なくとも 1 人のサブスクライバーが存在します。

于 2013-02-17T00:09:42.750 に答える