3

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

4

2 回答 2

4

请参阅这篇关于“多播如何工作”的文章。

简而言之,您的应用程序不需要跟踪多播订阅;路由器会为您做到这一点。如果您要生成多播数据,请生成它 - 路由器将负责该数据是否发送给订阅者。

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

于 2013-02-12T20:01:01.347 回答
1

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

于 2013-02-17T00:09:42.750 回答