0

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

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

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

IE

  • 将 DATA1 发送到设备 1
  • 将 DATA2 发送到设备 2
  • 将 DATA3 发送到 device3
  • 将 DATA4 发送到 device4

对比

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

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

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

4

2 回答 2

2

多播的主要优势之一是可扩展性,因此如果您将来倾向于拥有更多设备,多播将有所帮助。最好查看多播与单播性能以获得指导

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

于 2013-08-23T22:47:44.533 回答
2

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

于 2013-08-24T00:00:52.200 回答