http://www.cnblogs.com/hanjun/archive/2012/12/01/2797622.html

网络连接中用到的类:

一.Reachability

1.添加 Reachability 的.h和.m文件,再添加SystemConfiguration.framework。

2.Reachability中定义了三种网络状态:

typedef Num{

NotReachable = 0,  //无连接

ReachableViaWiFi,  //使用3G/GPRS网络

ReachableViaWWAN   //使用WiFi网络

}NetworkStatus;

3.示例:

Reachability *reachability = [Reachablity  reachabilityWithHostName:@"www.baidu.com"];

switch([reachabilityStatus]){

case  NotReachable:

//TODO

break;

case  ReachableViaWiFi:

//TODO

break;

case  ReachableViaWWAN:

//TODO

break;

}

4.检查当前网络环境

程序启动时,如果想检测可用的网络环境,可以像这样来使用

//是否wifi

+ (BOOL)isEnableWIFI

{

return ([[Reachability reachabiliyForLocalWIFI] currentReachabilityStatus] != NotReachable);

}

//是否3G

+ (BOOL)isEnable3G

{

return ([[Reachability reachabiliyForInternetConnetion] currentReachabilityStatus] != NotReachable);

}

示例:

- (void)viewWillAppear:(BOOL)animated

{

if (([Reachability reachabiliyForInternetConnetion].currentReachabilityStatus == NotReachable) && [Reachability                         reachabiliyForLocalWIFI].currentReachabilityStatus == NotReachable))

{

self.navigationItem.hidesBackButton = YES;

[self.navigationItem setLeftBarButtonItem:nil animated:NO];

}

}

5.链接状态的实时通知

实时检查,持续状态发生变化时,需要及时地通知用户:


Reachability 1.5版本
//MyAppDelegate.h #import "Reachability" @interface MyAppDelegate:NSObject<UIApplicationDelegate>
{
    
} @property NetworkStatus remoteHostStatus; @end 

//MyAppDelegate.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)
   {
       UIAlert *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.baidu.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 #import "Reachability"
@class Reachability;
@interface MyAppDelegate:NSObject<UIApplicationDelegate>
{
     Reachability *hostReach;
} @end 
 
 //MyAppDelegate.m #import "MyAppDelegate.h" @implementation MyAppDelegate //通知网络状态
- (void)reachabilityChanged:(NSNotification *)note
{
    Reachability *currentReach = [note object];
    NSParameterAssert([currentReach isKindOfClass:[Reachability class]]);
    NetworkStatus status = [currentReach currentReachabilityStatus];      if (status == NotReachable)
   {
       UIAlert *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"AppName",nil)
  message: NSLocalizedString (@"NotReachable",nil);
  delegate:nil cancelButtonTitle:@"YES" 
  otherButtonTitles:nil];    [alert show];
   [alert release];
    }
} //程序启动器,启动网络监视
- (void)applicationDidFinishLaunching:(UIApplication *)application
{
   //....    //监测网络情况
   [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) 
name:@"kNetworkReachabilityChangedNotification" object:nil];
  hostReach = [[Reachability reachabilityWithHostName:@"www.baidu.com"] retain];
 // hostReach startNotifer]; 
   //... }

二、其他常用的类。

1.NSURL

2.NSURLRequest

3.NSMutableURLRequest 是NSURLRequest的子类,可以设置一些请求参数

4.NSURLResponse

5.NSError

ios网络开发 网络状态检查的更多相关文章

  1. iOS开发网络篇—监测网络状态(转)

    文章转载自:http://www.cnblogs.com/wendingding/p/3950114.html iOS开发网络篇—监测网络状态 一.说明 在网络应用中,需要对用户设备的网络状态进行实时 ...

  2. iOS开发——网络篇——HTTP/NSURLConnection(请求、响应)、http响应状态码大全

    一.网络基础 1.基本概念> 为什么要学习网络编程在移动互联网时代,移动应用的特征有几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图只有通过网络跟外界进行数据交互.数据更新, ...

  3. iOS开发网络篇—监测网络状态

    iOS开发网络篇—监测网络状态 一.说明 在网络应用中,需要对用户设备的网络状态进行实时监控,有两个目的: (1)让用户了解自己的网络状态,防止一些误会(比如怪应用无能) (2)根据用户的网络状态进行 ...

  4. iOS 开发网络篇—监测网络状态

    iOS开发网络篇—监测网络状态 一.说明 在网络应用中,需要对用户设备的网络状态进行实时监控,有两个目的: (1)让用户了解自己的网络状态,防止一些误会(比如怪应用无能) (2)根据用户的网络状态进行 ...

  5. iOS开发系列--网络开发

    概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力 ...

  6. IOS网络开发概述

    概览 大部分应用程序都或多或少会牵扯到网络开发,例如说新浪微博.微信等,这些应用本身可能采用iOS开发,但是所有的数据支撑都是基于后台网络服务器的.如今,网络编程越来越普遍,孤立的应用通常是没有生命力 ...

  7. iOS开发网络篇—简单介绍ASI框架的使用

    iOS开发网络篇—简单介绍ASI框架的使用 说明:本文主要介绍网络编程中常用框架ASI的简单使用. 一.ASI简单介绍 ASI:全称是ASIHTTPRequest,外号“HTTP终结者”,功能十分强大 ...

  8. iOS开发网络篇—HTTP协议

    iOS开发网络篇—HTTP协议 说明:apache tomcat服务器必须占用8080端口 一.URL 1.基本介绍 URL的全称是Uniform Resource Locator(统一资源定位符) ...

  9. iOS开发网络篇—网络编程基础(二)

    下面叙述的是关于几个必须要知道的iOS网络编程入门级别的要点:       1.客户端如何找到连接的服务器    客户端通过URL找到想要连接的服务器   2.什么是URL     URL的全称是Un ...

随机推荐

  1. Wannafly挑战赛21:C - 大水题

    链接:Wannafly挑战赛21:C - 大水题 题意: 现在给你N个正整数ai,每个数给出一“好数程度” gi(数值相同但位置不同的数之间可能有不同的好数程度).对于在 i 位置的数,如果有一在j位 ...

  2. 九度OJ--1165(C++)

    #include <iostream>#include <string>#include <vector> using namespace std; int mai ...

  3. NO6——KMP

    int next[N]; char str1[M],str2[N]; //str1 长,str2 短 //len1,len2,对应str1,str2的长 void get_next(int len2) ...

  4. Java IO流-File类的使用示例-创建文件夹和文件的正确方法

    当创建一个文件时,比如:E:\\test\\test.txt,此时若文件夹test不存在,那么直接创建文件会出错,故首先要判断文件夹是否存在,不存在的话要首先创建文件夹. public class F ...

  5. 浅谈C#中show和showDialog的区别

    [转载] A.WinForm中窗体显示  显示窗体可以有以下2种方法:  Form.ShowDialog方法 (窗体显示为模式窗体)  Form.Show方法 (窗体显示为无模式窗体) 2者具体区别如 ...

  6. 浅谈c语言和c++中struct的区别

    今天做二叉树的时候,发现利用结构体有点乱,不知道怎么回事,我之前知道c语言中声明一个结构体变量时需要通过 struct 结构体名 变量名,而在c++中,可以不要struct,由于可以利用typedef ...

  7. lintcode-115-不同的路径 II

    115-不同的路径 II "不同的路径" 的跟进问题: 现在考虑网格中有障碍物,那样将会有多少条不同的路径? 网格中的障碍和空位置分别用 1 和 0 来表示. 注意事项 m 和 n ...

  8. System and Device power management.

    Advanced Configuration and Power Management Interface(ACPI)是由Intel,Microsoft等厂家订的一套Spec,规范了OS,APP对于电 ...

  9. [转]网页ContentType详细列表

    本文转自:来老师的专栏   http://blog.csdn.net/sweetsoft/article/details/6512050 不同的ContentType 会影响客户端所看到的效果.默认的 ...

  10. 【其他】Windows 系统安装IIS 打开页面出现空白解决方案

    部署IIS过程中遇到了一个奇怪的问题,就是怎么设置打开的页面都是一篇空白,IIS也没有任何报错,翻遍互联网好不容易找到了解决方法,今天就教给大家,希望大家不要走弯路.此方法Windows xp.7.8 ...