可靠地检查.Net中的网络连接类型(Windows 7)
问题描述:
在.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不可用。
理想的情况下,这种检查会被莫名其妙的框架内提供...
有没有更好的办法?
答
考虑到当前时代“移动”的使用情况,我认为您会努力做到这一点。例如,用户可以连接到他们的智能手机,连接到一个3g/4g集线器设备,如this,我相信所有这些设备都将显示为与任何其他Wifi连接一样。
这真的取决于你为什么要这么做?您或许可以测试连接上的延迟,但随着移动网络的改进,这将变得不太可靠。
我们需要提供一种视觉指示,表明哪种连接处于活动状态。确实,这一点很难解决,但是我们正处于一种“知道”硬件和用户通过移动宽带或“真实”LAN/Wifi连接连接网络的方式。硬件是标准化的,但问题是,新版本有时会得到新的调制解调器或驱动程序,报告新的NIC类型(例如,我们最初错过了Wwanpp2类型)。 – jeroenh 2015-07-27 06:50:16