获取系统当前网络的类型
来源:互联网 发布:台风海燕 知乎 编辑:程序博客网 时间:2024/05/22 21:53
/// <summary>
/// 获得所有工作状态的网络适配器名称
/// </summary>
/// <returns></returns>
public static NetworkInterface[] GetNetCardAdapters()
{
List<NetworkInterface> netCardAdapters = new List<NetworkInterface>();
NetworkInterface[] netWorks = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface adapter in netWorks)
{
if (adapter.NetworkInterfaceType == NetworkInterfaceType.Tunnel)
continue;
string mac = adapter.GetPhysicalAddress().ToString();
if (string.IsNullOrEmpty(mac) || adapter.OperationalStatus != OperationalStatus.Up)
{
continue;
}
int adapterType = IdentifyAdapterType(adapter.Id);
//去除虚拟网卡与未知设备
if (adapterType < 2)
{
continue;
}
netCardAdapters.Add(adapter);
}
return netCardAdapters.ToArray();
}
/// <summary>
/// 分辨网卡是真实,虚拟,还是无线
/// </summary>
/// <param name="adapterId"></param>
/// <returns>0未知网卡,1虚拟,2无线,3真实网卡</returns>
private static int IdentifyAdapterType(string adapterId)
{
string fRegistryKey = "SYSTEM\\CurrentControlSet\\Control\\Network\\{4D36E972-E325-11CE-BFC1-08002BE10318}\\" + adapterId + "\\Connection";
RegistryKey rk = Registry.LocalMachine.OpenSubKey(fRegistryKey, false);
if (rk != null)
{
// 区分 PnpInstanceID
// 如果前面有 PCI 就是本机的真实网卡
// MediaSubType 为 01 则是常见网卡,02为无线网卡。
string fPnpInstanceID = rk.GetValue("PnpInstanceID", "").ToString();
int fMediaSubType = Convert.ToInt32(rk.GetValue("MediaSubType", 0));
if (fPnpInstanceID.Length > 3 && fPnpInstanceID.Substring(0, 3) == "PCI")
return 3;
else if (fMediaSubType == 1)
return 1;
else if (fMediaSubType == 2)
return 2;
else if (fMediaSubType == 9)//3G网卡的值
return 9;
}
return 0;
}
/// <summary>
/// 获取当前网络连接类型
/// </summary>
/// <param name="ip"></param>
public static NetWorkType GetNetWorkType()
{
NetWorkType netType = NetWorkType.UnKnow;
NetworkInterface[] netCards = GetNetCardAdapters();
foreach (NetworkInterface adapter in netCards)
{
if (adapter.Description.Contains("Wireless") && netType != NetWorkType.Wan)
{
netType = NetWorkType.WLan;
}
else if (adapter.Description.Contains("3G"))
{
if (netType == NetWorkType.UnKnow)
{
netType = NetWorkType.W3G;
}
}
else
{
netType = NetWorkType.Wan;
}
}
return netType;
}
- 获取系统当前网络的类型
- 获得当前系统语言以及获取当前网络状态的类型
- 获取当前网络类型
- Android 获取当前系统的语言环境及网络连接类型(有源码)
- Android 获取当前系统的语言环境及网络连接类型
- Android程序:获取当前手机的网络类型
- Android开发中获取当前网络类型的方法
- 系统当前时间的各种类型的获取
- android 获取手机上面的IMSI序列号,IMEI,MAC地址,IP地址,当前时间,当前经纬度,获取网络类型
- 获取系统当前的用户
- 获取当前的系统数据
- 获取当前系统的config
- java获取当前的系统
- 获取系统当前的时间
- 获取当前系统的时间
- 获取当前的系统状态
- 输出当前运营商的网络类型
- Android判断当前网络的类型
- android关机和开机的receiver
- 站在巨人的肩上的好办法,简单高效!!!
- 雷凌wifi(RT3070)移植记录
- toLocaleString()、toString()和valueOf()方法
- toLocaleString()、toString()和valueOf()方法
- 获取系统当前网络的类型
- Python中的getattr()函数 (二)
- 51单片机片外扩展RAM
- 一个孤立的信息和一个相关的信息库信息网
- vc++ CString转换
- 为什么我们的学校总是培养不出杰出人才
- 记录拆花上shell
- TLC5615 10位D/A转换器
- 算法导论 逆序对问题