多播时通过WiFi的UDP丢失数据

多播时通过WiFi的UDP丢失数据,udp,broadcast,Udp,Broadcast,我目前正在开发一个网络协议,其中包括一个客户端到客户端系统,可以自动发现当前本地网络上的客户端 现在,我周期性地超过255.255.255.255,如果客户端不发出30秒,我会认为它是离线的。目标是保持客户机运行的最新列表。使用UDP可以很好地工作,但UDP不能确保数据包已成功传递。因此,当涉及到网络的WiFi部分时,我有时会收到关于死亡客户的虚假回复。目前,我已经减少了两次广播之间的时间,以解决问题,但仍然不能很好地工作,但我不认为这是干净的 我能做些什么来保存一份在线客户端列表,而不存在误报

我目前正在开发一个网络协议,其中包括一个客户端到客户端系统,可以自动发现当前本地网络上的客户端

现在,我周期性地超过255.255.255.255,如果客户端不发出30秒,我会认为它是离线的。目标是保持客户机运行的最新列表。使用UDP可以很好地工作,但UDP不能确保数据包已成功传递。因此,当涉及到网络的WiFi部分时,我有时会收到关于死亡客户的虚假回复。目前,我已经减少了两次广播之间的时间,以解决问题,但仍然不能很好地工作,但我不认为这是干净的


我能做些什么来保存一份在线客户端列表,而不存在误报的风险吗?

您可以将其翻过来,这样您就可以广播ServerIsUp消息了
每个客户端都可以在服务器上注册。当客户端离线时,它将注销,否则你可以认为它是活着的。

< P>为了减少误报,由于丢包,你应该稍微改变你心跳协议的逻辑。 您可以每N秒一个接一个地发送3个或更多数据包,而不是依赖于每N秒一个数据包的广播。这是ping和traceroute工具所遵循的方法。使用此方法,您可以显著降低来自对等方的丢失通知的概率


此外,您可以指定应用程序能够承受的一定数量的丢失公告。此外,为了使用无线网络将数据包丢失的可能性降至最低,请尽量减小广播UDP数据包的大小。

时间段的一半并在TCPTCP上运行它是一种单播协议。有一半的时间是我目前所做的,但我想要更可靠的东西。我采用的是客户机对客户机的架构。这就像每N秒有一个高峰期。非常感谢。我会尽快给你悬赏点数。