我需要找到特定时间可用的带宽。代码必须在 Visual C++ 或 .Net 系列中开发。如果有人知道怎么做,请帮帮我。
检查带宽的唯一方法是实际尝试使用它,即从其他地方下载文件并测量吞吐量。
即使如此,它也只是一个近似值,因为其他网络效应会影响结果:
如果您指的是当前网络利用率,您可以致电
DeviceIoControl
(hDevice,
OID_GEN_STATISTICS
,
...)
在 Vista 及更高版本上获取设备特定信息。 否则,请调用 GetIpStatisticsEx 获取系统范围的信息或使用 WMI 的 Win32_PerfRawData_Tcpip_NetworkInterface。
尝试通过使连接饱和来获取“可用”带宽并不是明智或可靠的措施。 只需尝试一些可用的在线速度测试,并考虑到它涉及不可扩展的带宽,并且容易受到拥塞控制、QoS 和流量整形的影响。
即使使用带宽,检查带宽也会很棘手。 例如,如果您尝试从远程计算机 X 下载数据,并且估计数字为 N Kbs,那么您如何知道这是您的带宽限制还是远程计算机 X 连接的限制?
您需要同时启动多台远程计算机的同步下载(或上传,如果这是您想要测量的方向),并不断增加负载,直到吞吐量停止增加。
但正如 Alnitak 所说,你仍然不知道还有哪些其他因素可能会影响结果。 例如,您的计算机上是否有其他进程正在使用该连接? 或者隔壁的孩子正在利用您的无线局域网并窃取您的带宽? 也许这就是您想要找出的!
都是废话,有话没说!