iOS 开发 网络实时监测
2016-03-08 16:52
591 查看
首先在AppDelegate.h添加头文件"Reachability.h",导入框架SystemConfiguration.frame
下面是代码:
- (BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary
*)launchOptions
{
//开启网络状况的监听
[[NSNotificationCenterdefaultCenter]addObserver:self selector:@selector(reachabilityChanged:)
name:kReachabilityChangedNotificationobject:nil];
self.hostReach
=[ReachabilityreachabilityWithHostName:@"www.baidu.com"] ;
//开始监听,会启动一个runloop
[self.hostReach
startNotifier];
}
-(void)reachabilityChanged:(NSNotification *)note
{
Reachability *currReach = [noteobject];
NSParameterAssert([currReachisKindOfClass:[Reachability class]]);
//对连接改变做出响应处理动作
NetworkStatus status = [currReachcurrentReachabilityStatus];
//如果没有连接到网络就弹出提醒实况
self.isReachable
= YES;
if(status == NotReachable)
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"网络连接异常"message:nil
delegate:nilcancelButtonTitle:@"确定"otherButtonTitles:nil];
[alert
show];
[alert
release];
self.isReachable =
NO;
return;
}
if (status==kReachableViaWiFi||status==kReachableViaWWAN){
UIAlertView
*alert = [[UIAlertView alloc] initWithTitle:@"网络连接信息"message:@"网络连接正常"delegate:nil
cancelButtonTitle:@"确定"otherButtonTitles:nil];
// [alert show];
[alert
release];
self.isReachable =
YES;
}
}
然后在每个页面的viewWillAppear:加上:
-(void)viewWillAppear:(BOOL)animated
{
[superviewWillAppear:YES];
AppDelegate *appDlg = (AppDelegate *)[[UIApplication
sharedApplication]
delegate];
if(appDlg.isReachable)
{
NSLog(@"网络已连接");//执行网络正常时的代码
}
else
{
NSLog(@"网络连接异常");//执行网络异常时的代码
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"网络连接异常"message:nil
delegate:nilcancelButtonTitle:@"确定"otherButtonTitles:nil];
[alert
show];
[alert
release];
}
}
这样就可以检查到在运行程序时网络突然的中断和连接。
下面是代码:
- (BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary
*)launchOptions
{
//开启网络状况的监听
[[NSNotificationCenterdefaultCenter]addObserver:self selector:@selector(reachabilityChanged:)
name:kReachabilityChangedNotificationobject:nil];
self.hostReach
=[ReachabilityreachabilityWithHostName:@"www.baidu.com"] ;
//开始监听,会启动一个runloop
[self.hostReach
startNotifier];
}
-(void)reachabilityChanged:(NSNotification *)note
{
Reachability *currReach = [noteobject];
NSParameterAssert([currReachisKindOfClass:[Reachability class]]);
//对连接改变做出响应处理动作
NetworkStatus status = [currReachcurrentReachabilityStatus];
//如果没有连接到网络就弹出提醒实况
self.isReachable
= YES;
if(status == NotReachable)
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"网络连接异常"message:nil
delegate:nilcancelButtonTitle:@"确定"otherButtonTitles:nil];
[alert
show];
[alert
release];
self.isReachable =
NO;
return;
}
if (status==kReachableViaWiFi||status==kReachableViaWWAN){
UIAlertView
*alert = [[UIAlertView alloc] initWithTitle:@"网络连接信息"message:@"网络连接正常"delegate:nil
cancelButtonTitle:@"确定"otherButtonTitles:nil];
// [alert show];
[alert
release];
self.isReachable =
YES;
}
}
然后在每个页面的viewWillAppear:加上:
-(void)viewWillAppear:(BOOL)animated
{
[superviewWillAppear:YES];
AppDelegate *appDlg = (AppDelegate *)[[UIApplication
sharedApplication]
delegate];
if(appDlg.isReachable)
{
NSLog(@"网络已连接");//执行网络正常时的代码
}
else
{
NSLog(@"网络连接异常");//执行网络异常时的代码
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"网络连接异常"message:nil
delegate:nilcancelButtonTitle:@"确定"otherButtonTitles:nil];
[alert
show];
[alert
release];
}
}
这样就可以检查到在运行程序时网络突然的中断和连接。
相关文章推荐
- (3)下载网络文件
- TCP/IP 协议族概述
- ACE中TCP通信
- iOS 怎样通过UDP发送广播寻找设备,拿到ip地址,然后用TCP 连接设备
- Http研究心得+面试心得
- 提升linux下tcp服务器并发连接数限制
- Ping检查服务器网络
- C++ 用libcurl库进行http通讯网络编程(转)
- HTTP头部详解
- http协议
- Tcp三次握手和四次挥手 流量控制和拥塞控制
- Nginx使用ssl模块配置https
- Spring MVC - HTTP Status 500 - Servlet.init() for servlet loginDispacher threw exception
- TCP和UDP的区别(转)
- http://www.molotang.com/articles/906.html
- 数据中心网络虚拟化 隧道技术
- HTTP 协议访问网络
- Node http.response 长连接数据流输出中断的问题
- Linux下套接字详解(补充)---- TCP协议中的三次握手和四次挥手(图解)
- 网络电视精灵思路分析