多播大数据包包含多个客户端的所有信息,而单个数据包则包含目标客户端的信息
Multicasting big packet contain all info to multiple clients vs individual packets to targeted clients
我正在编写一个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,这类数字。所以你别无选择。您必须单播。
相关文章:
- boost::asio UDP 广播客户端仅接收"fast"数据包
- 将相机数据从服务器实时流式传输到客户端
- 不将数据 socket.io c++(客户端)发送到 nodejs(服务器)socket.io
- 在 1 个服务器 n 客户端套接字 C++ MFC 应用程序中更新数据的客户端
- TCP 服务器的异步读取使用 boost::asio 打印客户端套接字发送的数据
- Java 客户端C++服务器数据发送/接收问题
- 如何从客户端在 gsoap C++ 的标头中传递非 xml 数据?
- 将数据发送到多个客户端 UDP 时不支持地址族
- 在C++中创建一个简单的数据包路由器,如何跟踪"客户端"?
- 在 MySQL 中运行 HTTP 服务器以从客户端接收数据
- cpp / c ++中的grpc客户端代码,元数据x-api-key/x-goog-api-key不起作用,给了我语音A
- TCP-Server以数据包结构(非Java客户端)发送文件
- 客户端在关闭(SHUT_WR)后将RST发送到收到的数据包
- gpsd客户端数据缓冲区
- 试图将带有结构双重指针的数据包发送给客户端时,访问违规行为.C 视觉工作室
- 多播大数据包包含多个客户端的所有信息,而单个数据包则包含目标客户端的信息
- C# 或 C/C++ 如何从客户端接收数据包,过滤并将它们重定向到服务器,从服务器接收并发送到客户端
- c++多线程套接字无法接收客户端数据
- 客户端和服务器之间UDP数据包连续流的问题
- 向给定remote_endpoint对象和套接字的客户端发送数据包