iOS 网络高级编程一:越是基础越是高级
我们需要了解IOS的网络层:我们使用NSURL请求数据,服务器返回数据,然而是怎么发送的请求,如何接收的数据呢?,这其中的底层实现是什么样的,NSURL是如何向下一级调用的?
1.我们用到的NSURL 属于cocoa层
2.NSURL基于C的API:CFNetwork、CSNetServices。其中CFNework在CFStream和CFSocket之上提供了简单网络接口(我们最多只需要了解到这里就好了)。
3.CFNework是对BSD scoket的轻量封装
4.BSD scoket 可以调用无线硬件、这样就可以发送请求了
一、NSURLConnection
NSURLConnection是一个Coacoa级别的API,他提供一个简单地方法来加载URL,可以与Web Service交互、获取图片视频,他构建在NSStream之上
二、GameKit 这个很少用 建立在Bonjour之上
三、Bonjour是Apple对零配置网络的实现
四、NSStream是Coacoa级别的API,构建在CFNetwork之上、作为NSURLConnection的基础、旨在完成一些底层网络任务,用于与远程服务器或本地文件进行通信、他所发出的与接收的数据都位于C缓冲区、是异步的,通过NSStresmDelegate更新通信
五、CFNetwork基础构建在Core Foundation层的CFSocket和CFStream API之上
六、BSD Socket 是网络构架层次中的最底层,使用C实现、无法穿过系统范围的v*n,如果WiFi或是蜂窝移动网络被关闭了,即使调用BSD Socket也是无法自动**的、苹果不推荐。
七、NSRunloop 运行循环是由类NSRunloop表示的,有些线程可以让操作系统唤醒睡眠的线程以管理到来的事件,而运行循环则是这些线程的基础组件,运行循环是这样一种循环,可以再一个周期内调度任务并处理到来的事件。ios 应用中的每一个线程最多只有一个运行循环,对于主线程来说,运行循环会为你开始,在didFinishLaunchingWithOptions方法调用之后就可以访问了~~~