有没有办法检测我正在使用什么样的连接? WiFi,3G还是以太网?

我正在尝试检测我连接的网络连接类型。 是WiFi还是3G? 有没有办法使用c#win forms .net 2.0或4.0?

foreach (NetworkInterface adapter in adapters) { if (adapter.OperationalStatus == OperationalStatus.Up) { if (adapter.NetworkInterfaceType == NetworkInterfaceType.Wireless80211) { lblNetworkType.Text = "you are using WiFi"; break; } else if (adapter.NetworkInterfaceType == NetworkInterfaceType.Ppp) { lblNetworkType.Text = "you are using 3G or ADSL or Dialup"; break; } else if (adapter.NetworkInterfaceType == NetworkInterfaceType.Ethernet) { lblNetworkType.Text = "you are using Ethernet"; break; } } } 

不幸的是,没有一种“整洁”的方式来做到这一点。 3G连接看起来与ADSL或拨号连接相同(网络类型为PPP)。

如果您确定自己只使用WiFi / 3G,则可以检查GetAllNetworkInterfaces提供的NetworkInterface类中的信息,如果接口类型为PPP, 则将其视为3G。 但正如我所提到的,其他类型的调制解调器连接也是如此。

编辑:你可能有运气在设备名称或描述中寻找“3G”,“HSPA”,“HSDPA”,“Dongle”。 但这只是一个“体面的猜测”,而不是绝对肯定。