多播大数据包包含多个客户端的所有信息与针对目标客户端的单个数据包

时间:2013-08-23 16:09:31

标签: c++ performance networking udp multicast

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

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

我可以向每个设备发送一个唯一的数据包,或者我可以创建一个包含每个设备的每个唯一数据位的大结构,具有目标ID,将其多播到所有设备,然后每个设备只选择输出所需的数据。

  • 将DATA1发送至device1
  • 将DATA2发送到device2
  • 将DATA3发送至device3
  • 将DATA4发送至device4

VS

  • 创建一个新的DATA,其中包含DATA1,DATA2,DATA3等多播数据到所有设备,每个设备选择要使用的相关数据。

在我尝试这两种方法之前,是否有任何理论上或记录下的实际优势(例如,更好的性能,更少的冲突,丢包等)?或者差异是否可以忽略不计?

我有关于同一项目的相关网络性能问题 Should I listen on different ports, or the same port?

2 个答案:

答案 0 :(得分:2)

多播的一个主要优点是可扩展性,因此将来如果您倾向于拥有更多设备多播将有所帮助。最好将多播与单播性能视为指导

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

答案 1 :(得分:2)

即使将未来的增长放在一边,你现在的200字节x 10设备的最坏情况已经是2000字节,这已经太大而无法通过UDP发送。实际的最大UDP数据报通常保持为576字节,即534字节的数字。所以你没有选择。你必须单播。