iOS网络底层实现

Posted SSIrreplaceable

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS网络底层实现相关的知识,希望对你有一定的参考价值。

ios上,有一个库叫做Core Foundation networking或CFNetwork,它是对原始Socket的轻量级封装,不过它很快对于大多数常见场景来说变得非常笨重了。最后,添加了另一层(NSStream)来封装CFNetwork,并且作为最基础的Objective-C网络API。大家更熟悉的类(比如NSURLConnection与UIWebView)都是非常易于使用的,而且能够通过很少的代码完成很多事情,这都是由于这些底层库所提供的坚实基础而实现的。

一. BSD Socket

Apple并不推荐这种方式,因为原始的Socket无法访问操作系统内建的网络特性(比如系统范围VPN)。更糟糕的是,初始化Socket连接并不会自动打开设备的Wi-Fi或是蜂窝无线电。无线电会智能地关闭以节省电池电量,任何通信连接都会失败,除非其他网络时程激活了无线电。CFNetwork对BSD Socket的封装可以激活设备的无线电,因此在几乎所有的场景中,我们都建议使用CFNetwrok,而非BSD Socket.

二. CFNetwork

CFNetworkd位于框架层次的更上一层,是对BSD Socket的一层轻量级封装。

三. NSStream

沿着框架层次再往上起鸡皮疙瘩就是NSStream了,它是针对CFNetwork API的Objective-C封装器。

四. 总结

框架层次越往上,代码就会越短越简单,不过,你却失去了一些能力,因为每个抽象层都隐藏了实际执行通信的原始网络Socket.

参考资料:《iOS网络高级编程-iPhone和iPad的企业应用开发》

以上是关于iOS网络底层实现的主要内容,如果未能解决你的问题,请参考以下文章

iOS网络底层实现

iOS爱上底层-Block实现与原理

iOS爱上底层-Block实现与原理

分布式微服务架构下网络通信的底层实现原理

ios开发事件处理之 四:hittest方法的底层实现与应用

iOS爱上底层-Block实现与原理