博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows Phone 7(WP7)开发 获取网络状态
阅读量:6466 次
发布时间:2019-06-23

本文共 2846 字,大约阅读时间需要 9 分钟。

一、判断是否有网络数据连接:

最基本的网络状态判断,如果没有网络连接,一切操作都进行不下去啦。

Microsoft.Phone.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()

 

二、判断网络类型(GSM/CDMA/WIFI/Ethernet):

在一般的应用程序中,需要知道的网络状态也就三种:无网络、WIFI/Ethernet、手机网络。

三者的区别就是:

1、“无网络”:不解释,大家都懂的。

2、“WiFi/Ethernet”:一般情况下速度比手机网络快,而且不计流量,更适合进行较大数据的操作,如下载个离线地图什么的。

3、“手机网络”:2G、3G网络都算作这种吧。优点就是方便,只要手机和运营商支持,只要有信号,就有网络。缺点就是费用较高,而且速度一般情况下不如上面那种快。

我们做应用应该从用户的角度考虑,根据用户的网络环境,提供适当的服务。这就需要在应用中判断网络状态然后采取适当的操作。

public static string GetNetStates()         {
var info = Microsoft.Phone.Net.NetworkInformation.NetworkInterface.NetworkInterfaceType; switch (info) {
case NetworkInterfaceType.MobileBroadbandCdma: return "CDMA"; case NetworkInterfaceType.MobileBroadbandGsm: return "CSM"; case NetworkInterfaceType.Wireless80211: return "WiFi"; case NetworkInterfaceType.Ethernet: return "Ethernet"; case NetworkInterfaceType.None: return "None"; default: return "Other"; } }

  

三、更细致的判断网络类型(3G/2G/WIFI/Ethernet):

在3G时代的今天,有的时候我们还需要知道用户的手机网络是3G的或是2G的。(这个方法是在MSDN论坛上看到的)

public static string NetName { get; set; } public static void GetNetName()         {
DeviceNetworkInformation.ResolveHostNameAsync( new DnsEndPoint("www.baidu.com", 80), new NameResolutionCallback(handle => {
NetworkInterfaceInfo info = handle.NetworkInterface; if (info != null) {
switch (info.InterfaceType) {
case NetworkInterfaceType.Ethernet: NetName = "Ethernet"; break; case NetworkInterfaceType.MobileBroadbandCdma: case NetworkInterfaceType.MobileBroadbandGsm: switch (info.InterfaceSubtype) {
case NetworkInterfaceSubType.Cellular_3G: case NetworkInterfaceSubType.Cellular_EVDO: case NetworkInterfaceSubType.Cellular_EVDV: case NetworkInterfaceSubType.Cellular_HSPA: NetName = "3G"; break; case NetworkInterfaceSubType.Cellular_GPRS: case NetworkInterfaceSubType.Cellular_EDGE: case NetworkInterfaceSubType.Cellular_1XRTT: NetName = "2G"; break; default: NetName = "None"; break; } break; case NetworkInterfaceType.Wireless80211: NetName = "WiFi"; break; default: NetName = "None"; break; } } else NetName = "None"; }), null); }

我的联通WCDMA测试时,网络状态为 NetworkInterfaceSubType.Cellular_3G,个人猜测,WCDMA的3.5G版本会出现NetworkInterfaceSubType.Cellular_HSPA。

至于TD-SCDMA,和CDMA2000,由于目前没有设备,无法测试。

 

 

 

 

欢迎转载,转载请注明出处:

锦燕云:

转载于:https://www.cnblogs.com/vistach/archive/2012/02/09/Windows_Phone_WP7_Develop_NetworkInterface_3G_WCDMA_GSM_WiFi.html

你可能感兴趣的文章
VuePress手把手一小時快速踩坑
查看>>
dnsmasq安装使用和体验
查看>>
学习constructor和instanceof的区别
查看>>
Vijos P1881 闪烁的星星
查看>>
ABP理论学习之领域服务
查看>>
Qt 控制watchdog app hacking
查看>>
让所有IE支持HTML5的解决方案
查看>>
RDD之五:Key-Value型Transformation算子
查看>>
Windows 搭建Hadoop 2.7.3开发环境
查看>>
python操作mysql数据库实现增删改查
查看>>
percona 5.7.11root初始密码设置
查看>>
Cognitive Security的异常检测技术
查看>>
Msg 15138 The database principal owns a schema in the database, and cannot be dropped.
查看>>
Cassandra 中的Snitch
查看>>
Impress.js上手 - 抛开PPT、制作Web 3D幻灯片放映
查看>>
生活杂事--度过十一中秋
查看>>
Pyrex也许是一个好东西
查看>>
Java内部类总结
查看>>
NeHe OpenGL第二课:多边形
查看>>
让WP7下复杂列表选项生动起来
查看>>