如何在 VC++ 中以编程方式检查互联网带宽?

问题描述 投票:0回答:4

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

c++ visual-studio winapi mfc
4个回答
15
投票

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

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

  • 延迟
  • 非对称上传/下载
  • 其他交通

3
投票

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

DeviceIoControl
(hDevice,
OID_GEN_STATISTICS
,
...
)

在 Vista 及更高版本上获取设备特定信息。 否则,请调用 GetIpStatisticsEx 获取系统范围的信息或使用 WMI 的 Win32_PerfRawData_Tcpip_NetworkInterface

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


2
投票

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

您需要同时启动多台远程计算机的同步下载(或上传,如果这是您想要测量的方向),并不断增加负载,直到吞吐量停止增加。

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


0
投票

都是废话,有话没说!

© www.soinside.com 2019 - 2024. All rights reserved.