如何使用C#计算带宽 [英] How to calculate bandwidth using c#

查看:265
本文介绍了如何使用C#计算带宽的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用C#测量bandwidh.这是我做的.欢迎提出意见和建议.

I want to measure bandwidh using c#. Here what I did. Comments and suggestions are welcome.

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

如果您有任何建议或意见,请随时这样做.

If you guys have any suggestion or comment, feel free to do so.

谢谢.

推荐答案

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

To calculate bandwith, I would use TCP instead of UDP. When you use UDP all the datagrams may get out really fast through your network card (at 100mbps) and get queued at the "slowest link" of the chain (e.g. a 512kbps cable modem/router). If the queue buffer gets full, its likely that datagrams will be discarded. So your test is not very reliable.

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

I would use TCP and make some math to transform tcp speed (KB/s) to throughput (Mbps) (I think TCP overhead is around 8%)

这篇关于如何使用C#计算带宽的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆