多播大数据包包含多个客户端的所有信息,而单个数据包则包含目标客户端的信息

Multicasting big packet contain all info to multiple clients vs individual packets to targeted clients

本文关键字:客户端 数据包 信息 单个 目标 包含 包含多 多播      更新时间:2023-10-16

我正在编写一个C++应用程序MyMasterApp,它通过UDP向多个客户端(约5-10个)发送信息(OSC),这些客户端是通过wifi的移动设备(Android或iPhone)。

每个设备都要接收相同类型的唯一信息。每个设备大概有100-200个字节,我会以30Hz的频率更新所有设备。

我可以向每个设备发送一个唯一的数据包,或者我可以创建一个大结构,其中包含每个设备的每个唯一数据位,并带有目标id,将其多播到所有设备,然后每个设备只挑选出它需要的数据。

  • 将DATA1发送到设备1
  • 将DATA2发送到设备2
  • 将DATA3发送到设备3
  • 将DATA4发送到设备4

  • 创建包含DATA1、DATA2、DATA3等的新DATA。将DATA组播到所有设备,并且每个设备选择要使用的相关数据

在我尝试这两种方法之前,其中一种方法与另一种方法相比是否有任何理论或记录的实际优势(例如,更好的性能、更少的碰撞、丢失的数据包等)?还是差异可以忽略不计?

我在上有一个关于同一项目的相关网络性能问题我应该在不同的端口上侦听,还是在同一个端口上侦听?

多播的主要优势之一是可扩展性,因此在未来,如果您倾向于拥有更多设备,多播将有所帮助。更好地观察引导的多播与单播性能

M。易卜拉希米、M.Daneshtalab、P.Liljeberg和H.Tenhunen。三维网状结构中单播和多播通信的性能评估。在计算机体系结构和数字系统(CADS),2010年第15届CSI国际研讨会,第161-162页,2010年9月。

即使不考虑未来的增长,您目前200字节x 10个设备的最坏情况已经是2000字节,这已经太大了,无法通过UDP发送。UDP数据报的实际最大值通常是576字节,或者534,这类数字。所以你别无选择。您必须单播。