- 浏览: 91504 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
ma_029619:
的确,打不开
用 UITableView 进行多选的代码例子 -
janedoneway:
不错,学习了,同时问一下,动画结束后同时隐藏图片,要怎么做?你 ...
[iOS]iPhoto的删除动画(转) -
cn23snyga:
博主的POST方法2.1中,怎么是 setHTTPMethod ...
[iOS]网络编程专题:发送Http请求(POST GET)的方法 -
bear1122ccc:
文件坏了。
用 UITableView 进行多选的代码例子
什么是UDP和TCP的区别是什么?
TCP的全称为传输控制协议。这种协议可以提供面向连接的、可靠的、点到点的通信。
UDP全称为用户数据报协议,它可以提供非连接的不可靠的点到多点的通信。
用TCP还是UDP,那要看你的程序注重哪一个方面?可靠还是快速?
TCP/IP 建立连接的过程
在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
第一次握手:建立连接时,客户端发送连接请求到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到客户端连接请求,向客户端发送允许连接应答,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的允许连接应答,向服务器发送确认,客户端和服务器进入通信状态,完成三次握手。
(所谓的三次握手就是要有三次连接信息的发送/接收过程。TCP连接的建立需要进行三次连接信息的发送/接收。)
一:确认网络环境3G/WIFI
1. 添加源文件和framework
开发Web等网络应用程序的时候,需要确认网络环境,连接情况等信息。如果没有处理它们,是不会通过Apple的审(我们的)查的。
Apple 的 例程 Reachability 中介绍了取得/检测网络状态的方法。要在应用程序程序中使用Reachability,首先要完成如下两部:
1.1. 添加源文件:
在你的程序中使用 Reachability 只须将该例程中的 Reachability.h 和 Reachability.m 拷贝到你的工程中。如下图:
1.2.添加framework:
将SystemConfiguration.framework 添加进工程。如下图:
2. 网络状态
Reachability.h中定义了三种网络状态:
typedef enum {
NotReachable = 0, //无连接
ReachableViaWiFi, //使用3G/GPRS网络
ReachableViaWWAN //使用WiFi网络
} NetworkStatus;
因此可以这样检查网络状态:
Reachability *r = [Reachability reachabilityWithHostName:@“www.apple.com”];
switch ([r currentReachabilityStatus]) {
case NotReachable:
// 没有网络连接
break;
case ReachableViaWWAN:
// 使用3G网络
break;
case ReachableViaWiFi:
// 使用WiFi网络
break;
}
3.检查当前网络环境
程序启动时,如果想检测可用的网络环境,可以像这样
// 是否wifi
+ (BOOL) IsEnableWIFI {
return ([[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] != NotReachable);
}
// 是否3G
+ (BOOL) IsEnable3G {
return ([[Reachability reachabilityForInternetConnection] currentReachabilityStatus] != NotReachable);
}
例子:
- (void)viewWillAppear:(BOOL)animated {
if (([Reachability reachabilityForInternetConnection].currentReachabilityStatus == NotReachable) &&
([Reachability reachabilityForLocalWiFi].currentReachabilityStatus == NotReachable)) {
self.navigationItem.hidesBackButton = YES;
[self.navigationItem setLeftBarButtonItem:nil animated:NO];
}
}
4. 链接状态的实时通知
网络连接状态的实时检查,通知在网络应用中也是十分必要的。接续状态发生变化时,需要及时地通知用户:
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:nil
cancelButtonTitle:@"YES" otherButtonTitles:nil];
[alert show];
[alert release];
}
}
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// ...
// 监测网络情况
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(reachabilityChanged:)
name: kReachabilityChangedNotification
object: nil];
hostReach = [[Reachability reachabilityWithHostName:@"www.google.com"] retain];
hostReach startNotifer];
// ...
}
发表评论
-
[iOS]iPhoto的删除动画(转)
2012-03-05 09:36 3180iPhoto 中想删除某张照片时,点击删除键,就能看到照 ... -
testBubble_泡泡聊天
2012-02-29 11:38 1151testBubble_zhou_min_泡泡聊天 ... -
BigHeadTip_谷歌地图大头针
2012-02-29 11:34 1635BigHeadTip_zhou_min_谷歌地图大头针 ... -
FFDownloadManager_alertview文件下载器
2012-02-29 11:28 1069FFDownloadManager_zhou_min_aler ... -
苹果官网--iPhone应用程序编程指南
2012-02-29 11:21 1024苹果官网-zhou_min-iPhone应用程序编程指南 ... -
iOS之GCD
2012-02-12 21:35 0GCD之dispatch queue iOS中 ... -
循环滚动
2012-02-02 15:19 0循环滚动 -
自定义AlertView(多种色彩)
2012-02-02 14:50 1158自定义AlertView(多种色彩) ... -
用 UITableView 进行多选的代码例子
2012-02-02 14:19 1616用 UITableView 进行多选的代码例子 ... -
QQ风格的UITableView
2012-02-02 14:00 1315QQ风格的UITableView ... -
GLpaint画图
2012-02-01 23:50 1847GLpaint画图 -
滑动弹出菜单的代码例子
2012-02-01 23:31 1189滑动弹出菜单的代码例子可在应用中实现方便美观的按钮收放效果。如 ... -
UIAlertTableView 里进行单选和多选的代码例子
2012-02-01 23:22 1143UIAlertTableView 里进行单选和多选的代码例子 ... -
自定义控件用法和一些常用页面效果
2012-02-01 22:23 1022自定义控件用法和一些常用页面效果 原文:http:// ... -
viewDidUnload 和 dealloc 的区别
2012-01-30 10:57 7489对于iphone开发人员来说,内存管理是极为重要的技巧,哪怕程 ... -
第二个iPhone应用程序:“Say Hello”
2012-01-30 10:49 1356项目需求 写一个iPhone应用程序,要求可以输入名字, ... -
[iOS]网页保存为png
2012-01-20 10:48 0保存 -
[iOS]iOS截屏
2012-01-19 17:22 2752UIGraphicsBeginImageContext ... -
[iOS]iOS对PDF加密,解密
2012-01-16 17:34 3194保护PDF内容为了保护PDF ... -
[iOS]AES加密在iOS上面的实现
2012-01-16 13:38 9160Encryption.h文件 // // En ...
相关推荐
《iOS网络高级编程:iPhone和iPad的企业应用开发》是一本专为iOS开发者设计的深入学习网络编程技术的书籍。在iOS应用开发中,网络功能是不可或缺的部分,它使得应用程序能够与远程服务器进行交互,获取数据,实现...
在iOS开发中,还会用到一些其他的网络编程技术,如Reachability类用于监控网络连接状态,以便在网络状况发生变化时作出相应的处理。此外,应用可能还需要处理网络延迟或无网络状态下的一些逻辑。 WebSockets是在iOS...
这篇博客文章将深入探讨如何在iOS项目中使用Reachability来监控网络状态,并提供相关的源码分析。 一、 Reachability简介 Reachability是由Tony Million编写的开源库,后来被Apple纳入到其示例代码中,成为iOS...
Reachability是苹果官方提供的一款用于检测iOS设备网络状态的示例代码库,它极大地简化了开发者在应用中检查网络连通性的过程。这个DEMO包含了详细的实现方式和使用示例,帮助开发者理解如何在自己的应用中集成网络...
在iOS开发中,网络编程是不可或缺的一部分,它使得应用程序能够与服务器进行数据交换,实现诸如下载、上传、实时通信等功能。本教程聚焦于iOS的网络编程,特别提到了多线程网络编程,这对于提高用户体验和优化性能至...
IOS 网络编程 ReachAbility头文件和源文件,用于判定网络的连接情况
总之,Reachability是iOS开发中不可或缺的一部分,它使得开发者能够更好地控制和优化应用在网络条件下的行为。通过正确地使用和理解Reachability,我们可以为用户提供更稳定、更流畅的使用体验。
《iOS网络高级编程》这本书是针对iOS开发人员深入学习网络技术的重要参考资料,它涵盖了iOS平台上的网络编程的各种高级主题,并且附带了源码,使读者能够通过实践来加深理解。以下将对这本书中可能涉及的关键知识点...
《iOS网络高级编程》是一本深入探讨iOS平台上网络编程技术的专业书籍,主要针对有经验的iOS开发者,旨在提升他们的网络编程能力。这本书涵盖了各种网络通信协议、数据传输方式以及网络应用设计模式,提供了丰富的源...
Reachability.swift 是一款由Ashley Mills开发的著名第三方库,专为Swift编程语言设计,用于检测iOS、macOS、tvOS以及watchOS等Apple平台上的网络可达性。这个库简化了开发者判断当前设备网络状态的过程,包括是否...
1. **HTTP/HTTPS协议**:iOS应用通常使用HTTP或更安全的HTTPS协议进行网络通信。HTTP是无状态的,而HTTPS在HTTP基础上增加了SSL/TLS加密,确保数据传输的安全性。 2. **URL Loading System**:苹果提供了一套基于...
1. Reachability:这是主要的类,它负责初始化、监测网络状态,并提供网络状态的查询接口。你可以通过传入主机名或者特定的 IP 地址来创建 Reachability 实例,然后开始监听网络状态变化。 2. startNotifier():此...
Reachability是iOS开发中一个非常重要的工具,它是由著名开发者Tony Million编写的,用于检测设备当前的网络连接状态。在iOS应用开发中,了解设备的网络连接情况是至关重要的,因为许多功能,如数据同步、在线购物、...
var reachability: Reachability? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { reachability = ...
Reachability是iOS开发中一个非常重要的工具,它用于检测设备的网络可达性,例如Wi-Fi、蜂窝数据等网络状态的变化。这个工具是由斯坦福大学的Scotty Loveless开发的,并且在iOS开发者社区中广泛使用。这篇博客文章...
var reachability: Reachability? private init() { guard let reachability = Reachability(reachabilityForInternetConnection()) else { return } self.reachability = reachability reachability....
private var reachability: Reachability? private init() { startMonitoring() } func startMonitoring() { guard let reachability = Reachability.reachability(for: .internetConnection) else { return...
以上就是关于iOS网络编程中Reachability的详细介绍,包括如何集成Reachability到项目中、检测不同类型的网络状态以及如何实时响应网络状态的变化等内容。通过这些技术点的学习与实践,可以帮助开发者更好地管理iOS...
Reachability 是一个在iOS和macOS开发中广泛使用的开源库,由Tony Million 创建,用于检测设备的网络连通状态和网络类型。这个库基于Apple的SystemConfiguration框架,它提供了简单易用的接口来帮助开发者判断应用...
4. **网络状态监控**: 使用Reachability类库监测网络状态,包括Wi-Fi、蜂窝数据以及网络是否可达,这对于提供良好的用户体验至关重要。 5. **缓存策略**: URLSession支持HTTP缓存策略,包括不缓存、使用服务器定义...