Apple 的 例程 Reachability 中介绍了取得/检测网络状态的方法。在你的程序中使用 Reachability 只须将该例程中的 Reachability.h 和 Reachability.m 拷贝到你的工程中。

Reachability 中定义了3种网络状态:

  • NotReachable

    无连接

  • ReachableViaCarrierDataNetwork (ReachableViaWWAN)

    使用3G/GPRS网络

  • ReachableViaWiFiNetwork (ReachableViaWiFi)

    使用WiFi网络

检测莫个特定站点的连接状况

    Reachability *r = [Reachability reachabilityWithHostName:@"www.apple.com"];switch ([r currentReachabilityStatus]){case NotReachable:// 没有网络连接break;case ReachableViaWWAN:// 使用3G网络break;case ReachableViaWiFi:// 使用WiFi网络break;}

检测当前网络环境

    // 是否wifi+ (BOOL) IsEnableWIFI {return ([[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] != NotReachable);}// 是否3G+ (BOOL) IsEnable3G {return ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] != NotReachable);}

连接状态实时通知

网络连接状态的实时检查,通知在网络应用中也是十分必要的。接续状态发生变化时,需要及时地通知用户。由于Reachability1.5版与2.0版有一些变化,这里分开来说明使用方法。

Reachability 1.5

// My.AppDelegate.h#import "Reachability.h"@interface MyAppDelegate : NSObject <UIApplicationDelegate> {NetworkStatus remoteHostStatus;
}@property NetworkStatus remoteHostStatus;@end// My.AppDelegate.m#import "MyAppDelegate.h"@implementation MyAppDelegate@synthesize remoteHostStatus;// 更新网络状态
- (void)updateStatus {self.remoteHostStatus = [[Reachability sharedReachability] remoteHostStatus];
}// 通知网络状态
- (void)reachabilityChanged:(NSNotification *)note {[self updateStatus];if (self.remoteHostStatus == NotReachable) {UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"AppName", nil) message:NSLocalizedString(@"NotReachable", nil)delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];[alert show];[alert release];}
}// 程序启动器,启动网络监视
- (void)applicationDidFinishLaunching:(UIApplication *)application {// 设置网络检测的站点[[Reachability sharedReachability] setHostName:@"www.apple.com"];[[Reachability sharedReachability] setNetworkStatusNotificationsEnabled:YES];// 设置网络状态变化时的通知函数[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:)name:@"kNetworkReachabilityChangedNotification" object:nil];[self updateStatus];
}- (void)dealloc {// 删除通知对象[[NSNotificationCenter defaultCenter] removeObserver:self];[window release];[super dealloc];
}

Reachability 2.0

// MyAppDelegate.h@class Reachability;@interface MyAppDelegate : NSObject <UIApplicationDelegate> {Reachability  *hostReach;
}@end// MyAppDelegate.m
- (void)reachabilityChanged:(NSNotification *)note {Reachability* curReach = [note object];NSParameterAssert([curReach isKindOfClass: [Reachability class]]);NetworkStatus status = [curReach currentReachabilityStatus];if (status == NotReachable) {UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"AppName""message:@"NotReachable"delegate:nilcancelButtonTitle:@"YES" otherButtonTitles:nil];[alert show];[alert release];}
}- (void)applicationDidFinishLaunching:(UIApplication *)application {// ...// 监测网络情况[[NSNotificationCenter defaultCenter] addObserver:selfselector:@selector(reachabilityChanged:)name: kReachabilityChangedNotificationobject: nil];hostReach = [[Reachability reachabilityWithHostName:@"www.google.com"] retain];[hostReach startNotifer];// ...
}

获得网络状态和实时监控网络状态改变相关推荐

  1. 在 Linux/UNIX 终端下使用 nload 实时监控网络流量和带宽使用

    摘要:如果你想在命令行界面监控网络吞吐量,nload应用程序是个不错的选择.它是一个实时监控网络流量和带宽使用的控制台应用程序,使用两个图表可视化地展示接收和发送的流量,并提供诸如数据交换总量.最小/ ...

  2. Kusion Watch:实时监控资源状态变更

    KusionStack 是蚂蚁开源的云原生可编程技术栈! 文 | 袁昊(花名:浮鸢) KusionStack 核心贡献者 蚂蚁 PaaS 核心团队高级研发工程师 一.KusionStack简介 Kus ...

  3. 诊断神器Arthas,动态跟踪Java代码,实时监控JVM状态

    简介 Arthas 是Alibaba开源的Java诊断工具,动态跟踪Java代码:实时监控JVM状态,可以在不中断程序执行的情况下轻松完成JVM相关问题排查工作 .支持JDK 6+,支持Linux/M ...

  4. 实时监控网络流量,精准辨别网络性能瓶颈

    网络流量反映网络运作状态,是辨别网络运行是否正常的关键指标,通过对网络流量进行监测不仅能反映交换机.路由器等设备的工作状态,更能体现整个网络资源的运行性能.同时,用户在网络中的行为可以通过其承载的流量 ...

  5. android监控网络是否连接(android监控网络请求apk)

    Android使用广播监听网络状态变化 一直收到系统广播 因为这个系统广播在不停的发送,系统网络状态在不停的变化.比如关闭,打开,扫描,正在连接,已连接等状态. android 代码怎么实时监控连接当 ...

  6. 如何使用WGCLOUD实时监控网站状态并告警

    我们的网站在运行中,偶尔会有一些问题出现,比如不能访问,机房停电了,被CC了等,都会导致我们的网站在短时间内停止提供服务. 我们迫切需要一款能实时监测网站状态,发现不能访问时给我们发送通知(邮件短信微 ...

  7. WCF服务通过TCP实时监控客户端状态,并可以向客户端广播推送消息,实现双向通信

    仅供参考:未经允许,不得转载. 前段时间在做WCF开发的过程中,用户需要在服务端对客户端进行监控,需要知道客户端什么时候上线,什么时候下线,当然服务端也可以给客户端推送信息,就是所谓的双向通信了. 要 ...

  8. Android实时监测网络连接状态及网络是否可用,类似微信的功能。

    实现实时监控网络变化,类似于微信的功能,当网络不可用时app能实时感知到,网上找了很多例子并不能实现,或者只实现其中一部分功能,我就参考大家的方法做一个组合. 一.网络状态变化监测,此方式只能监测网络 ...

  9. 网络视频监控如何入门?如何安装和配置、设备选择和实时监控?

    网络视频监控是一种先进的安全技术,它可以通过互联网连接到远程视频服务器,使用户可以随时随地监控所关注的地点.本文将介绍网络视频监控的基础入门知识,包括安装和配置.设备选择和实时监控等方面. 一.安装和 ...

最新文章

  1. 荐号 | 技术人如何在职场竞争中处于优势地位
  2. 客户端连ORACLE
  3. 算法题存档20190304
  4. 异常处理:Jurisdiction policy files are not signed by trusted signers!
  5. 中断描述符表描述符:任务门,中断门,陷阱门(调用门)
  6. W3C-Web Service
  7. 软考 网络工程师如何复习?
  8. rom大小 stm32f205_最小的基于STM32F205VE的系统板
  9. 杰奇2.3内核淡绿唯美小说网站源码 PC+手机版
  10. “Matter时代”行业再显梯队化,多强竞逐第一序列
  11. 支付宝第三方应用,用户登录授权获取信息
  12. 【项目实战】——历史数据归档
  13. WP-CONTENT/UPLOADS的777,775,744,644,444文件权限设置
  14. RV1109人脸识别门禁闸机主板方案
  15. 图标字体的优缺点和使用
  16. 深入解读App买量行业
  17. c 语言 组合数,C++中求组合数的各种方法总结详解
  18. WIFI模块RTL8723BU驱动移植
  19. 张朝阳:我想去清华大学教学生“打坐”
  20. 数据中心的直流电源与交流电源

热门文章

  1. 网站域名、备案、七牛云图床重新搭建与博客整理
  2. Low-Rank Adaption
  3. Docker基本用法安装部署
  4. C语言与C++的区别
  5. Unity3D Animation Rig 蜘蛛动画
  6. 微支付 js-api java 坑王之王!!!
  7. Android逆向工程:针对HTML5开发的App如何下手?这就带你上车!
  8. myeclipse 识别不了nav标签怎么办?
  9. 解压后java文字乱码_怎么解决java解压zip包出现乱码
  10. Excel 黏贴逗号分隔的文本到