2015-03-02 77 views
1

在.Net(desktop,Win7)中,是否有一种可靠的方法来可靠地检查网络连接类型,以确定活动网络连接是否为移动连接?可靠地检查.Net中的网络连接类型(Windows 7)

目前我有这样的:

public bool IsMobileConnectionActive() 
{ 
    if (!NetworkInterface.GetIsNetworkAvailable()) return false; 

    // PPP & broadband Interfaces 
    var broadbandTypes = new[] 
    { 
      NetworkInterfaceType.Ppp, 
      NetworkInterfaceType.Wwanpp, 
      NetworkInterfaceType.Wwanpp2 
     }; 

    var mobileInterfaces = from nic in NetworkInterface.GetAllNetworkInterfaces() 
          where nic.OperationalStatus == OperationalStatus.Up 
          where broadbandTypes.Contains(nic.NetworkInterfaceType) 
          select nic; 
    return mobileInterfaces.Any(); 
} 

然而,它似乎相当脆弱检查特定的网络接口类型。例如,在.net 4中,类型Wwanpp和Wwanpp2不可用。

理想的情况下,这种检查会被莫名其妙的框架内提供...

有没有更好的办法?

回答

2

考虑到当前时代“移动”的使用情况,我认为您会努力做到这一点。例如,用户可以连接到他们的智能手机,连接到一个3g/4g集线器设备,如this,我相信所有这些设备都将显示为与任何其他Wifi连接一样。

这真的取决于你为什么要这么做?您或许可以测试连接上的延迟,但随着移动网络的改进,这将变得不太可靠。

+0

我们需要提供一种视觉指示,表明哪种连接处于活动状态。确实,这一点很难解决,但是我们正处于一种“知道”硬件和用户通过移动宽带或“真实”LAN/Wifi连接连接网络的方式。硬件是标准化的,但问题是,新版本有时会得到新的调制解调器或驱动程序,报告新的NIC类型(例如,我们最初错过了Wwanpp2类型)。 – jeroenh 2015-07-27 06:50:16