作为建立更相关模型的第一步,我尝试在两台 Raspberry Pi 之间尽可能快地发送数据,这两台 Raspberry Pi 都放在我的桌子上,都连接到同一个相当不错的 wifi 路由器。使用 C++,我在一台 Pi 上打开了一个 TCP 套接字,并尽可能快地输入了 20 MB(零)。在另一台 Pi 上,我也打开了一个套接字,我尽可能快地接收(并按位分组)数据。
结果显示耗时约 8.7 秒,速度约为 2.3 MB/秒。缓冲区大小似乎没有太大影响。
我期望它快得多。我错过了什么?
答案1
鉴于特定硬件生产商声明的最大能力为“S”(兆)比特每秒,您将永远无法获得该值的 100% - 您应该预料到由于多种因素导致速度减慢。
一般来说,对于 TCP/IP,只要所有相关设备都具有足够好的计算能力,就可以实现接近 70% 的 S。
通过对特定任务进行仔细的优化,您可能会获得(略微)更高的吞吐量。例如在以太网硬件上使用“UDP”。
降低良好速度可能性的因素:
- 协议开销的相对权重/使用“小”数据包
- 规格低于标准电缆,电缆受到电磁干扰
- WLAN、无线、蓝牙 - 例如任何基于无线电的传输
- 对于无线电:无线电节点之间的长距离、来自其他节点的干扰、空气湿度水平、无线电路径中间的墙壁、树木或其他障碍物。
- ... 更多的。
参考:https://en.wikipedia.org/wiki/Transmission_Control_Protocol