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