网络编程:
1. 使用CFNetwork(精简模式)
> 定义一个URL 使用NSRUL创建一个url
> 使用NSURLRequest来创建一个请求,要将上层创建的URL作为参数传递进去。如果用NSMutableURLRequest来创建,可以修改其请求的参数
> 创建一个NSURLConnection 在方法中需要将请求作为参数传递,并添加代理为本身 如果连接不为空则为连接成功,否则,连接不成功。
> 代理方法:NSURLConnectionDelegate,NSURLConnectionDataDelegate
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response // 可通过下面方法来得到编码方式
/*
NSLog(@"%@",[response textEncodingName]); // 返回编码名称
*/
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data // 要在其中设置编码格式,将其进行转化
/*
NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingUTF8);
NSString *str = [[NSString alloc] initWithData:data encoding:enc];
*/
2. 使用socket方式来进行网络编程
iOS网络编程层次结构也分为三层:
Cocoa层:NSURL,Bonjour,Game Kit,WebKit
Core Foundation层:基于 C 的 CFNetwork 和 CFNetServices
OS层:基于 C 的 BSD socket
Cocoa层是最上层的基于 Objective-C 的 API,比如 URL访问,NSStream,Bonjour,GameKit等,这是大多数情况下我们常用的 API。Cocoa 层是基于 Core Foundation 实现的。
Core Foundation层:因为直接使用 socket 需要更多的编程工作,所以苹果对 OS 层的 socket 进行简单的封装以简化编程任务。该层提供了 CFNetwork 和 CFNetServices,其中 CFNetwork 又是基于 CFStream 和 CFSocket。
OS层:最底层的 BSD socket 提供了对网络编程最大程度的控制,但是编程工作也是最多的。因此,苹果建议我们使用 Core Foundation 及以上层的 API 进行编程。
本文将介绍如何在 iOS 系统下使用最底层的 socket 进行编程,这和在 window 系统下使用 C/C++ 进行 socket 编程并无多大区别。
BSD socket ARI简介
接口详解: