6

我正在尝试检测我连接到哪种网络连接。是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;
                }
            }
        }
4

1 回答 1

4

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

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

编辑:在设备名称或描述中查找“3G”、“HSPA”、“HSDPA”、“加密狗”可能会有一些运气。但这只是一个“体面的猜测”,而不是绝对确定的。

于 2012-11-29T12:08:08.137 回答