我想使用 C# 测量带宽。这是我所做的。欢迎提出意见和建议。
- 找到最大的udp负载(在我的测试台上,它是1472字节)
- 创建 1472 字节大小的不可压缩数据
- 将此数据从服务器多次发送到客户端(在我的测试中,其 5000 个数据包)
- 客户端在第一个数据包到达时启动秒表
- 当所有数据已发送后,向客户端发送通知,说明所有数据已发送
- 客户端停止秒表
- 我将带宽计算为(发送的总数据包(5000)* MTU(1500字节))/时间流逝
- 我注意到有些数据包丢失了。最好的,损失20%。最坏的情况下损失40%。我在计算带宽时没有考虑到这一点。我怀疑客户端网络设备遇到缓冲区溢出。我需要考虑这个因素吗?
如果大家有任何建议或意见,请随时提出。
Thanks.
为了计算带宽,我将使用 TCP 而不是 UDP。当您使用 UDP 时,所有数据报可能会通过您的网卡(以 100mbps)快速传出,并在链的“最慢链路”处排队(例如 512kbps 电缆调制解调器/路由器)。如果队列缓冲区已满,则数据报可能会被丢弃。所以你的测试不太可靠。
我会使用 TCP 并进行一些数学运算,将 tcp 速度 (KB/s) 转换为吞吐量 (Mbps)(我认为 TCP 开销约为 8%)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)