我想使用 C# 测量带宽。这是我所做的。欢迎提出意见和建议。
- 找到最大的 udp 负载(在我的测试台上,它是 1472 字节)
- 创建 1472 字节大小的不可压缩数据
- 多次将此数据从服务器发送到客户端(在我的测试中,它有 5000 个数据包)
- 客户端在第一个数据包到达时启动秒表
- 发送完所有数据后,向客户端发送通知,说明所有数据已发送
- 客户端秒表
- 我将带宽计算为(发送的总数据包(5000)* MTU(1500 字节))/时间流逝
- 我注意到一些数据包丢失了。最好的,20% 的损失。最坏情况下损失 40%。我在计算带宽时没有考虑到这一点。我怀疑客户端网络设备遇到缓冲区溢出。我需要考虑这个因素吗?
如果你们有任何建议或意见,请随时提出。
谢谢。
最佳答案
要计算带宽,我会使用 TCP 而不是 UDP。当您使用 UDP 时,所有数据报可能会非常快速地通过您的网卡(以 100mbps)发出并在链的“最慢链接”处排队(例如 512kbps 电缆调制解调器/路由器)。如果队列缓冲区变满,数据报很可能会被丢弃。所以你的测试不是很可靠。
我会使用 TCP 并进行一些数学运算以将 tcp 速度 (KB/s) 转换为吞吐量 (Mbps)(我认为 TCP 开销约为 8%)
关于c# - 如何使用c#计算带宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4167278/