如何避免因 IGMP 监听而导致组播超时

问题描述 投票:0回答:1

我有一个嵌入式设备 (ESP32),它使用具有多播功能的 UDP 套接字。它通过另一个充当接入点的 WiFi 设备连接到路由器。

一段时间(260秒)后,套接字停止接收任何数据。据我了解,接入点会进行一些 IGMP 侦听,但设备在超时后会从组订阅中删除。

应该怎样做才能使设备不从多播订阅中删除?我认为路由器应该定期发送成员资格查询,但我如何知道那里发生了什么?路由器不发送这些查询?接入点不转发它们?设备不回答这些查询?

c sockets udp multicast
1个回答
0
投票

是的。路由器需要定期发送IGMP查询报文。设备加入组一段时间然后退出,这正是没有设备发送查询消息时的行为。设备在加入组时会发送一条初始成员身份消息,因此一切都会工作一段时间,但随后就会从组中过期,因为它们不再发送另一条消息,此时它们似乎停止工作。

并非所有路由器都实现 IGMP 查询器,它可能是您必须显式启用的功能。如果没有路由器实现查询器功能,您可以尝试从网络上的某个主机运行一个查询器 - 查询器并不是路由器,通常只是由其执行此操作。您甚至可以将一台设备添加到您的 ESP32 设备(或者更好的是,将一台设备用作 IGMP 查询器设备)。

当发送查询消息时,您将使用数据包捕获工具在网络上看到它们,就像您看到会员消息一样。

© www.soinside.com 2019 - 2024. All rights reserved.