有没有一种方法可以检测我正在使用什么类型的连接?WiFi、3G还是以太网?

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;
                }
            }
        }

我觉得当你调用NetworkInterface.GetAllNetworkInterfaces()时,你需要检查枚举NetworkInterfaceType - V4Vendetta
1
我做了,但是关于3G连接并不是很清楚。 - Arrabi
1个回答

4

很不幸,没有一种“整洁”的方法来实现这个功能。一个3G连接看起来与ADSL或拨号连接相同(网络类型为PPP)。

如果你确定只会使用WiFi / 3G,那么你可以检查GetAllNetworkInterfaces提供的 NetworkInterface 类中的信息,并将其视为3G,如果接口类型为PPP。但是,正如我所提到的,其他类型的调制解调器连接也是一样的。

编辑:您可以尝试在设备名称或描述中查找“3G”,“HSPA”,“HSDPA”,“Dongle”,但这只是一个“合理的猜测”,而不是完全确定。


可能是ADSL或拨号连接。最好的检测方法是什么?我认为ADSL将是“NetworkInterfaceType.AsymmetricDsl”。 - Arrabi
1
@Arrabi - 一个3G连接会显示为ADSL或拨号连接。你正在寻找检测它的方法,这是一个主观性问题,那么你尝试过什么,为什么不满意呢? - Security Hound
@Ramhound,我更新了我的问题。对于造成的误解,我很抱歉。 - Arrabi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接