IP多播:我怎么知道有人订阅了

本文关键字:多播 我怎么知道 IP | 更新日期: 2023-09-27 17:58:55

我一直在研究有关多播的各种文档(.NET WinSock、c++boost::asio)。我遇到的一个问题是,我看不出你怎么知道一个群组是否至少有一个订阅者。我需要它的原因是,如果没有人在听,那么创建数据就没有多大意义。是否有从下一跳发回的关于树当前状态的消息?当第一个订阅者出现或最后一个订阅者离开时,是否触发了某种事件?

IP多播:我怎么知道有人订阅了

请参阅这篇关于"多播工作原理"的文章

简而言之,您的应用程序不需要跟踪多播订阅;路由器为你做这件事。如果你有多播数据要生成,那么就生成它——路由器会负责数据是否发送给用户。

路由器没有引发任何事件来通知您订阅。如果你想要一些通知,你必须将该功能构建到你自己的自定义协议实现中,并要求你的客户端明确通知主机。

您可以知道,如果您可以发出IGMP QUERY消息,或者通过侦听IGMP JOIN/LEVE消息:除非您连接到多个路由器,否则您将只能获得其中一个。只要最后一条IGMP消息是您的组的JOIN而不是LEAVE,就至少有一个订阅者。