如何使用c#计算带宽

时间:2010-11-12 17:16:59

标签: c# networking bandwidth

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

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

    感谢。

1 个答案:

答案 0 :(得分:1)

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

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