Windows Phone 同步方式获取网络类型

简介: 原文:Windows Phone 同步方式获取网络类型  在Windows Phone 开发中有时候需要获取设备当前连接网络的类型,是Wifi,还是2G,3G,或者4G,SDK中提供获取网络类型的API(Microsoft.Phone.Net.NetworkInformation. DeviceNetworkInformation),通过此API我们可以方便的获取相关信息。
原文: Windows Phone 同步方式获取网络类型

  在Windows Phone 开发中有时候需要获取设备当前连接网络的类型,是Wifi,还是2G,3G,或者4G,SDK中提供获取网络类型的API(Microsoft.Phone.Net.NetworkInformation. DeviceNetworkInformation),通过此API我们可以方便的获取相关信息。但是此API是基于异步回调的方式获取的,如果需要同步获取,那么就需要做一些特殊的处理。

  以下代码定义网络类型信息类,用于存储获取的网络类型信息。

 1     /// <summary>
 2     /// 网络类型
 3     /// </summary>
 4     public enum NetworkType
 5     {
 6         None = 0,
 7         Wifi = 1,       //Wifi
 8         Mobile2G = 2,   //2G网络
 9         Mobile3G = 3,   //3G网络
10         Mobile4G = 4    //4G网络
11     }
12 
13     /// <summary>
14     /// 网络类型信息
15     /// </summary>
16     public class NetworkInfo
17     {
18         /// <summary>
19         /// 网络接口的名称
20         /// </summary>
21         public string InterfaceName { get; set; }
22 
23         /// <summary>
24         /// 网络接口的说明
25         /// </summary>
26         public string Description { get; set; }
27 
28         /// <summary>
29         /// 网络类型
30         /// </summary>
31         public NetworkType InterfaceType { get; set; }
32     }

 

  以下代码将从系统NetworkInterfaceInfo解析获取网络类型信息并写入到上面构造的NetworkInfo类中。

 1         private static NetworkInfo parseNetworkInfo(NetworkInterfaceInfo info)
 2         {
 3             NetworkInfo netInfo = new NetworkInfo();
 4             if (info != null)
 5             {
 6                 netInfo.InterfaceName = info.InterfaceName;
 7                 netInfo.Description = info.Description;
 8                 switch (info.InterfaceType)
 9                 {
10                     case NetworkInterfaceType.MobileBroadbandCdma:
11                     case NetworkInterfaceType.MobileBroadbandGsm:
12                         switch (info.InterfaceSubtype)
13                         {
14                             case NetworkInterfaceSubType.Cellular_GPRS:
15                             case NetworkInterfaceSubType.Cellular_1XRTT:
16                             case NetworkInterfaceSubType.Cellular_EDGE:
17                                 netInfo.InterfaceType = NetworkType.Mobile2G;
18                                 break;
19                             case NetworkInterfaceSubType.Cellular_3G:
20                             case NetworkInterfaceSubType.Cellular_EVDO:
21                             case NetworkInterfaceSubType.Cellular_EVDV:
22                             case NetworkInterfaceSubType.Cellular_HSPA:
23                                 netInfo.InterfaceType = NetworkType.Mobile3G;
24                                 break;
25                             case NetworkInterfaceSubType.Cellular_LTE:
26                             case NetworkInterfaceSubType.Cellular_EHRPD:
27                                 netInfo.InterfaceType = NetworkType.Mobile4G;
28                                 break;
29                             default:
30                                 netInfo.InterfaceType = NetworkType.None;
31                                 break;
32                         }
33                         break;
34                     case NetworkInterfaceType.Wireless80211:
35                         netInfo.InterfaceType = NetworkType.Wifi;
36                         break;
37                     default:
38                         netInfo.InterfaceType = NetworkType.None;
39                         break;
40                 }
41             }
42             return netInfo;
43         }

  关于NetworkInterfaceInfo. NetworkInterfaceSubType的各种网络类型的说明给出以下表格:

网络类型

说明

Unknown

没有有关网络接口类型的其他信息。

Cellular_GPRS

使用通用分组无线业务 (General Packet Radio Service, GPRS) 蜂窝技术的网络接口。这是 2.5G 技术。

Cellular_1XRTT

使用无线传输技术 (Radio Transmission Technology, 1xRTT) 蜂窝技术的网络接口。这是 2.5G 技术。

Cellular_EVDO

Evolution Data Only (EV-DO) 蜂窝技术的网络接口。这是 3G 技术。

Cellular_EDGE

使用增强型数据速率 GSM 演进 (Enhanced Data   rates for GSM Evolution, EDGE) 蜂窝技术的网络接口。这是2.5G 技术。

Cellular_3G

使用第三代 (3G) 蜂窝技术的网络接口。

Cellular_HSPA

使用高速下行分组接入 (High-Speed Downlink Packet Access, HSPA) 蜂窝技术的网络接口。这是 3.5G 技术。

Cellular_EVDV

使用数据和语音演进 (Evolution Data and Voice, EV-DV) 蜂窝技术的网络接口。这是 3G 技术。

Desktop_PassThru

桌面 pass- through 网络接口。

WiFi

使用无线技术 (802.11) 的网络接口。

Cellular_LTE

使用长期进化 (Long Term Evolution,LTE) 蜂窝技术的网络接口。这是 4G 技术。

Cellular_EHRPD

使用增强型高速率数据包 (Enhanced High Rate Packet Data,EHRPD) 蜂窝技术的网络接口。这是 4G 技术。

 

  下面给出通过回调的方式获取网络类型信息的实现方式。

 1         public static NetworkInfo NetInfo = null;
 2         public static void getNetworkType()
 3         {
 4             DeviceNetworkInformation.ResolveHostNameAsync(
 5             new DnsEndPoint("www.microsoft.com", 80),
 6             new NameResolutionCallback(handle =>
 7             {
 8                 NetworkInterfaceInfo info = handle.NetworkInterface;
 9                 NetInfo = parseNetworkInfo(info);
10             }), null);
11         }

 

  下面给出如何将基于异步回调的方式转换为同步方式来获取网络类型信息,此种转换方式不仅仅只用于此处,对于所有的基于异步回调的处理都可以安装此种处理来转换成同步获取。实例代码如下:

 1         public static async Task<NetworkInfo> getNetworkTypeAsync()
 2         {
 3             NetworkInfo result = await Task.Factory.StartNew<NetworkInfo>(() =>
 4             {
 5                 NetworkInfo netInfo = null;
 6                 EventWaitHandle Wait = new AutoResetEvent(false);
 7                 DeviceNetworkInformation.ResolveHostNameAsync(
 8                 new DnsEndPoint("www.microsoft.com", 80),
 9                 new NameResolutionCallback(handle =>
10                 {
11                     NetworkInterfaceInfo info = handle.NetworkInterface;
12                     netInfo = parseNetworkInfo(info);
13                     Wait.Set();
14 
15                 }), null);
16                 Wait.WaitOne();
17                 return netInfo;
18             });
19             return result;
20         }
目录
相关文章
|
10月前
|
安全 Linux 网络安全
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
267 0
Nipper 3.9.0 for Windows & Linux - 网络设备漏洞评估
|
监控 安全 网络协议
恶意软件无处逃!国内版“Manus”AiPy开发Windows沙箱工具,进程行为+网络传输层级监控! 头像 豪气的
NImplant.exe 是一款后渗透测试工具,可实现远程管理与持久化控制。其优点包括无文件技术、加密通信和插件扩展,但也存在被检测风险及配置复杂等问题。为深入分析其行为,我们基于 aipy 开发了 Windows 沙箱工具,针对桌面上的 NImplant.exe 进行多维度分析,涵盖进程行为、网络连接(如 TCP 请求、目标 IP/域名)、文件控制等,并生成传输层监控报告与沙箱截图。结果显示,aipy 工具响应迅速,报告清晰易读,满足分析需求。
|
网络协议 安全 测试技术
Windows为何在高速网络环境频繁“失速”?
本文深入剖析了企业在高速网络环境中,因Windows系统限制导致传输速率下降的问题,包括接收缓冲区、安全软件及老旧设备等因素,并提供四步定位法及优化方案,助力企业突破传输瓶颈,提升效率。
|
安全 Ubuntu Linux
Nipper 3.8.0 for Windows & Linux - 网络设备漏洞评估
Nipper 3.8.0 for Windows & Linux - 网络设备漏洞评估
624 0
Nipper 3.8.0 for Windows & Linux - 网络设备漏洞评估
|
XML 安全 网络安全
Nipper 3.7.0 Windows x64 - 网络设备漏洞评估
Nipper 3.7.0 Windows x64 - 网络设备漏洞评估
305 0
Nipper 3.7.0 Windows x64 - 网络设备漏洞评估
|
机器学习/深度学习 数据采集 算法
基于MobileNet深度学习网络的MQAM调制类型识别matlab仿真
本项目基于Matlab2022a实现MQAM调制类型识别,使用MobileNet深度学习网络。完整程序运行效果无水印,核心代码含详细中文注释和操作视频。MQAM调制在无线通信中至关重要,MobileNet以其轻量化、高效性适合资源受限环境。通过数据预处理、网络训练与优化,确保高识别准确率并降低计算复杂度,为频谱监测、信号解调等提供支持。
|
安全 Windows
【Azure Cloud Service】在Windows系统中抓取网络包 ( 不需要另外安全抓包工具)
通常,在生产环境中,为了保证系统环境的安全和纯粹,是不建议安装其它软件或排查工具(如果可以安装,也是需要走审批流程)。 本文将介绍一种,不用安装Wireshark / tcpdump 等工具,使用Windows系统自带的 netsh trace 命令来获取网络包的步骤
518 32
|
监控 Ubuntu Linux
视频监控笔记(五):Ubuntu和windows时区同步问题-your clock is behind
这篇文章介绍了如何在Ubuntu和Windows系统中通过设置相同的时区并使用ntp服务来解决时间同步问题。
571 4
视频监控笔记(五):Ubuntu和windows时区同步问题-your clock is behind
|
机器学习/深度学习 算法 数据安全/隐私保护
基于深度学习网络的宝石类型识别算法matlab仿真
本项目利用GoogLeNet深度学习网络进行宝石类型识别,实验包括收集多类宝石图像数据集并按7:1:2比例划分。使用Matlab2022a实现算法,提供含中文注释的完整代码及操作视频。GoogLeNet通过其独特的Inception模块,结合数据增强、学习率调整和正则化等优化手段,有效提升了宝石识别的准确性和效率。
|
安全 Linux 网络安全
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息
nmap 是一款强大的开源网络扫描工具,能检测目标的开放端口、服务类型和操作系统等信息。本文分三部分介绍 nmap:基本原理、使用方法及技巧、实际应用及案例分析。通过学习 nmap,您可以更好地了解网络拓扑和安全状况,提升网络安全管理和渗透测试能力。
1063 5