iOS 读书笔记-网络API

文章来自《ios网络高级编程》 在这里只是摘录,其中还有好多东西不知道是什么,等做完整本书的笔记回过头来看下。

框架的每一层都提供了一套关键api,为开发者提供了各种功能与控制。

1 nsurlconnection 是cocoa级别的api,它提供了简单的方法来加载url请求,可以与web service直接进行交互、获取图片、视频还能简单的得到一个格式化的html文档。它构建在NSStream之上,并且在http、https、文件和ftp进行了优化。NSURLConnection限制了你所使用的协议,但是提供了一个健壮的缓存引擎。

2 Game Kit

game kit 的核心功能在于提供了一个点到点的网络选项。在传统的网络配置中,game kit构建在bonjour之上;然而,game kit 并不需要网络基础设施就能使用。他能创建自组的bluetooth personal area networks(PAN),这样在极少或者没有基础网络的地方就是很好的网络候选者。

3 Bonjour

bonjour 是apple 对零配置网络的实现。它提供了一种机制,可以检测并于网络设备进行连接,而无需了解设备的网络地址。bonjour通过名字、服务类型与域这个元件来引用服务。他对多播DNS与基于DNS的服务探索所要求的底层网络进行了抽象。

在cocoa层,NSNetService API 提供了一个接口,用于发布和解析Bonjour服务的地址信息,可以通过NSNetServiceBrowser API 探索网络上可用的服务。发布Bonjour服务需要理解core Foundation才能配置好通信所需的socket。

4 NSStream

NSStream 是一个cocoa级别的api,构建在CFNetwork之上,最为NSURLConnection的基础,旨在完成一些网络任务。类似于NSURLConnection,NSStream提供了一种机制,用以与远程服务器或本地文件进行通信。不过可以通过NSStream在诸如telnet或SMTP等NSURLConnection不支持的协议之上进行通信。

NSStream 提供的额外的控制是有代价的。他并没有提供对HTTP/s响应状态码或认证内建的支持。他所发出与接收的数据都位于c的缓冲区。他还无法管理多个外发请求,需要子类化才能添加这个特征。NSstream是异步的,通过NSstreamDelegate 实现通信更新。

5CFNetwork

CFNetwork API 位于基础的BSD socket之上,用在NSStream、URL加载系统、Bonjour与geme kit API 的实现中,他为http 与FTP等高级协议提供了原生支持。CFNetwork 与BSD socket之间的主要差别在于运行循环的集成。如果应用使用了CFNetwork那么输入与输出都会在运行循环中进行调度。

CFNetwork比url加载系统都提供了更多的配置选项。在使用CFNetwork创建http请求时可以使用这些配置选项,在创建请求时,需要手工将请求一同发送的http头和cookie信息一起添加进去。而在NSURLConnection中,这些都会被自动添加。

CFNetwork基础设施构建在core foundation 层的CFsocket与cfstream api之上,CFNetwork 包含了针对特定协议的API ,比如用于FTP服务器通信的CFFTP、用于发送和接受http消息的CFHTTP、用于发布与浏览Bonjour服务的CFNetServices 等。

6 BSD socket

构成了大多数Internet活动的基础,是网络架构的最底层。BSD socket 使用c实现,但是可以使用在oc中。不推荐使用BSD socket API ,例如BSD socket 无法穿过系统范围的VPN,wi-fi或者蜂窝无线被关闭了,调用其api 也无法自动激活。apple 建议使用CFNetwork 或是更高层的API。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-02 16:28:16

iOS 读书笔记-网络API的相关文章

iOS -读书笔记-网络请求

知道"3次握手"吗?突然想起这个词 什么是3次握手? TCP三次握手/四次挥手详解 这里是3次握手的详细解释 3次握手就是为了可靠的传送数据,TCP(什么是TCP呢?TCP就是一种可靠传输的协议)在发送数据之前,两台主机之间进行3次握手.3次握手完成后才发送数据. 预备知识: 位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(ur

iOS 读书笔记 第一章

1.确定某个实例或类方法是否可用. 1)使用NSObject的类方法instancesRespondToSelector:来确定是否在该类的一个实例中存在一个特定的选择器. NSArray *array = @[@"1",@"2"]; if ([NSArray instancesRespondToSelector:@selector(sortUsingComparator:)]) { //do something use sortUsingComparator: }

IOS学习笔记 -- 网络编程

一.HTTP协议1.面试题: 聊一下HTTP协议(表达对HTTP协议的看法)* HTTP协议的全称: 超文本传输协议, 定制传输数据的规范(客户端和服务器之间的数据传输规范)* 描述HTTP协议完整的通信过程 2.通信过程1> 请求* 客户端 --> 服务器* 请求的内容a."请求行" : 请求方法\请求资源路径\HTTP协议版本GET /MJServer/login?username=123&pwd=123&method=get&type=JSON

iOS学习笔记---网络请求

一.HTTP协议的概念 HTTP协议:Hyper Text Transfer Protocol(超文本传输协议)是用于从万维网服务器传送超文本到本地浏览器的传输协议.HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型(c/s) HTTP协议的特点 支持客户/服务器模式(c/s模式) 简单快速 灵活,HTTP允许任意类型的对象进行传输,正在传输的对象类型由Content-type加以标记 iOS学习笔记---网络请求

iOS开发笔记 - 网络篇

计算机网络基础 ??计算机网络是多台独立自主的计算机互联而成的系统的总称,最初建立计算机网络的目的是实现信息传递和资源共享. ??如果说计算机是第二次世界大战的产物,那么计算机网络则是美苏冷战的产物.20世纪60年代初期,美国国防部领导的ARPA提出研究一种崭新的.能够适应现代战争的.生存性很强的通信系统并藉此来应对苏联核攻击的威胁,这个决定促使了分组交换网的诞生,也奠定今天计算机网络的原型,这是计算机网络发展史上第一个里程碑式的事件. ??第二个里程碑式的事件是20世纪80年代初,国际标准化组

iOS核心笔记——网络编程-网络安全

1.数据安全: 1.01 攻城利器:Charles(公司中一般都使用该工具来抓包,并做网络测试)2.注意:Charles在使用中的乱码问题,可以显示包内容,然后打开info.plist文件,找到java目录下面的VMOptions,在后面添加一项:-Dfile.encoding=UTF-83.02 数据安全的原则4. 1)在网络上"不允许"传输用户隐私数据的"明文"5. 2.)在本地"不允许"保存用户隐私数据的"明文"6.03

iOS核心笔记——网络编程-文件MIMEType

1.获取文件的MIMEType: 1-1.方式一:查看对照表 查看文件的MIMEType 1-2.方式二:发送网络请求-从响应头中获取 1. [[[NSURLSession sharedSession] dataTaskWithURL:[NSURL fileURLWithPath:@"/Users/xiaomage/Desktop/Snip20161126_238.png"] completionHandler:^(NSData * _Nullable data, NSURLRespo

iOS核心笔记——网络编程-HTTPS协议

1.HTTPS的基本使用: 1.HTTPS简单说明: ?了解:HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版. ?重要:即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL. 它是一个URI scheme(抽象标识符体系),句法类同http:体系.用于安全的HTTP数据传输. ?重要:https:URL:表明它使用了HTTPS,

iOS 读书笔记-cookie

cookie是什么东西? Cookie/Session机制详解这位博主写的很详细,可以看一下. iOS 应用中可以在http连接中方便的使用cookie.url加载框架帮我们做了大量的工作以利用协议的这个特征. 经常用到cookie的地方有3个:检索cookie的值.显示删除cookie.手工将cookie加到请求中. url加载系统会自动处理所有http/s请求的cookie,会将返回的cookie保存在响应中,然后按照cookie处理规则将其添加到随后的请求中. url加载系统提供了两个重要