如何以编程方式检查VC ++中的Internet带宽?

时间:2009-04-08 09:01:30

标签: c++ visual-studio winapi mfc

我需要在特定时间找到可用的带宽。代码必须在Visual C ++或.Net系列中开发。如果有人知道如何,请帮助我。

3 个答案:

答案 0 :(得分:15)

检查带宽的唯一方法是实际尝试使用它,即从其他地方下载文件并测量吞吐量。

即便如此,它也只是一个近似值,因为其他网络效应会影响结果:

  • 延迟
  • 非对称上传/下载
  • 其他流量

答案 1 :(得分:3)

如果您指的是当前的网络利用率,可以致电

DeviceIoControl (hDevice, OID_GEN_STATISTICS , ... )

在Vista及更高版本上

获取特定于设备的信息。否则,请拨打GetIpStatisticsEx以获取系统信息,或使用WMI的Win32_PerfRawData_Tcpip_NetworkInterface

试图通过尝试使连接饱和来尝试获得“可用”带宽不是一种明智或可靠的措施。只需尝试一些可用的在线速度测试,并考虑它涉及不可扩展的带宽,并且易受拥塞控制,QoS和流量整形的影响。

答案 2 :(得分:2)

即使使用它,检查带宽也很棘手。例如,如果您尝试从远程计算机X下载数据并估计N Kbs的数字,那么您将如何知道您的带宽限制或远程计算机X连接的限制?

您需要同时使用多台远程计算机同时开始下载(或上传,如果这是您要测量的方向)并继续增加负载,直到吞吐量停止增加。

但正如Alnitak所说,你仍然不知道其他因素可能会影响结果。例如,您的机器上是否有其他进程使用该连接?或者是隔壁的孩子捎带你的无线局域网并窃取你的带宽?也许这就是你想要找到的东西!