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

Posted

技术标签:

【中文标题】有没有办法检测我正在使用啥样的连接? WiFi、3G 还是以太网?【英文标题】:Is there a way to detect what kind of connection I'm using ? WiFi, 3G or Ethernet?有没有办法检测我正在使用什么样的连接? WiFi、3G 还是以太网? 【发布时间】:2012-11-17 12:02:19 【问题描述】:

我正在尝试检测我所连接的网络连接类型。是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 我做了,但是关于 3G 连接不是很清楚。 【参考方案1】:

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

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

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

【讨论】:

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

以上是关于有没有办法检测我正在使用啥样的连接? WiFi、3G 还是以太网?的主要内容,如果未能解决你的问题,请参考以下文章

我应该使用啥样的描述符来检测海豹幼崽?

CSP nonce 实现是啥样的?

为了接收我想要获得的输出,我应该实施啥样的连接?

这个 wcf 服务正在运行……那是啥样的绑定?哪个是默认绑定?有人解释吗?

静态 cocoa/cocoa-touch 库应该基于啥样的 SDK?

dyndns 使用啥样的重定向类型?