如何使用c#计算带宽

我想用c#测量bandwidh。 这就是我做的。 欢迎提出意见和建议。

  1. 找到最大udp有效载荷(在我的测试台上,它的1472字节)
  2. 创建1472字节大小的不可压缩数据
  3. 将此数据从服务器发送到客户端多次(在我的测试中,其5000个数据包)
  4. 客户端在第一个数据包到达时启动秒表
  5. 发送完所有数据后,向客户端发送通知,说明所有数据都已发送
  6. 客户停止秒表
  7. 我计算带宽为(总发送数据包(5000)* MTU(1500字节))/时间流逝
  8. 我注意到有些数据包丢失了。 最好的,20%的损失。 最坏的是40%的损失。 在计算带宽时我没有考虑到这一点。 我怀疑客户端网络设备遇到缓冲区溢出。 我需要考虑这个因素吗?

如果你们有任何建议或评论,请随时这样做。

谢谢。

要计算带宽,我会使用TCP而不是UDP。 当您使用UDP时,所有数据报都可以通过您的网卡(100mbps)快速输出,并在链的“最慢链路”排队(例如512kbps电缆调制解调器/路由器)。 如果队列缓冲区已满,则可能会丢弃数据报。 所以你的测试不太可靠。

我会使用TCP并进行一些数学运算将tcp速度(KB / s)转换为吞吐量(Mbps)(我认为TCP开销约为8%)