IP多播:我如何知道有人被订阅?

时间:2013-02-12 19:55:08

标签: c# c++ boost multicast

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

2 个答案:

答案 0 :(得分:4)

请参阅本文“How Multicasting Works。”

简而言之,您的应用程序不需要跟踪多播订阅;路由器为你做这件事。如果您要生成多播数据,然后生成它 - 路由器将负责将该数据发送给订阅者。

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

答案 1 :(得分:1)

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