繁体   English   中英

如何知道多播UDP中组成员的数量?

[英]How can I know number of group members in multicast UDP?

我正在使用C语言编写聊天程序。 在这里,我必须知道使用相同多播地址的组成员的数量。 有什么办法知道吗?

通常,没有内置的方法可以知道有多少成员。 理论上可能有成千上万个。

您可以使用pcap库来侦听IGMP消息,但这只会告诉您何时有人加入或离开小组,而不是告诉谁当前在小组中。 您还可以ping多播组并查看谁响应,但是您还需要一个pcap库。

在您的应用程序上下文中,您可能想知道该应用程序正在运行多少个实例。 在这种情况下,您需要在协议中定义某种类似于ping的消息类型。 该应用程序的一个实例在启动时将发送此消息,而收到该消息的任何其他实例都应响应。

大量成员可能存在可伸缩性问题,但是如果您刚开始,它应该可以正常工作。

您无法通过侦听IGMP来做到这一点。

您和客户端(包括客户端本身)之间的每个主机和路由器都会抑制此信息。 仅当发件人已知的成员数分别变为1或0时,才发送IGMP加入和离开消息。 如果另一个成员加入同一主机,则不会发送另一个加入。 同样,如果到达路由器的加入消息使路由器知道的成员主机的数量从零变为一,则它将发送上游加入,但从一变为两个或更多时,则不会发送上游加入。

结果是任何特定主机都知道存在或不存在下游成员。

如果您想知道总数,则必须自己在应用程序协议中构建消息……哪种类型的组播失败了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM