【问题标题】: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 连接不是很清楚。

标签: c# winforms networking wifi 3g


【解决方案1】:

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

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

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

【讨论】:

  • 它可能是 ADSL 或拨号连接。有什么最好的方法来检测它。我认为 ADSL 将是“NetworkInterfaceType.AsymmetricDsl”
  • @Arrabi - 3G 连接将显示为 ADSL 或拨号连接。您正在寻求检测方法,这是一个主观问题,那么您尝试了哪些方法,为什么对它不满意?
  • @Ramhound,我更新了我的问题。很抱歉造成误解。
猜你喜欢
  • 1970-01-01
  • 2012-04-09
  • 1970-01-01
  • 2015-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多