确定网络接口带宽/类型而不传输数据

时间:2009-05-11 18:20:56

标签: c++ winapi networking bandwidth

Win32中有没有办法以编程方式确定给定网络接口的带宽而不实际传输任何数据?我只想区分不同类型的接口(例如,拨号与DSL与LAN),因此粗略的数量级很好,我不需要实际测量带宽。

问题的背景是我的应用程序非常需要带宽,如果用户尝试通过低带宽接口运行它,我想向用户显示警告,例如:拨号调制解调器或GPRS调制解调器

我看过其他一些related questions,但如果可能的话,我想避免测量吞吐量。特别是GPRS调制解调器可能有使用上限,我不想吃掉用户的容差 - 我宁愿以其他方式检测到连接不良而根本不发送任何数据。

我对Win32 / C ++的答案最感兴趣,但任何想法都会感激不尽。

3 个答案:

答案 0 :(得分:6)

你可以使用WMI查询,当然还有Win32函数调用,但是这个查询:

Select * from Win32_PerfFormattedData_Tcpip_NetworkInterface

答案 1 :(得分:4)

您可以使用InternetGetConnectedState来确定连接类型(LAN /调制解调器/等)。这将告诉您他们是否有一个不带宽传输的有点(非调制解调器)连接。

不幸的是,如果没有连接和传输数据,你就无法做到这一点。系统无法知道其LAN连接之外的带宽限制 - 即:您可以直接连接到LAN上的网关,并且可能与外部世界有蹩脚的连接。但就您的计算机而言,它是全速LAN连接...

答案 2 :(得分:3)

为什么不问用户?他应该知道。

您的应用可以缓存网络地址的信息,并且只会再次询问网络地址是否已更改。

相关问题