我想创建一个 C++ 应用程序来将数据从一台 Linux 机器发送(即广播)到多台 Linux 机器。假设linux机器都在一台交换机下,并且都在同一个子网下。
我发现这可以使用 UDP 多播来完成,类似于Boost ASIO 示例。在尝试最大化数据吞吐量时,我可以期望使用多个 UDP 流获得更好的性能吗?
答案1
是的,通过多播,数据将仅发送到交换机一次,交换机可以将其同时传递到所有接收器。使用UDP,数据需要单独发送到每个接收者。因此(理论上),多播的最大吞吐量是单播的 n 倍,其中 n 是接收者的数量。
请注意,对于 UDP 单播和 UDP 多播,您都必须处理丢失的数据包并重新发送(除非数据是视频/音频,其中偶尔丢失的数据包并不重要,但您不必实现自己的解决方案,只需使用现成的),因此请使用适当的协议(PGM,...)。