【读书笔记】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网络-底层网络的更多相关文章
- 《图解HTTP》读书笔记(一:网络基础TCP/IP)
好书什么时候开始读都不晚.作为一个测试人员,是一定要掌握一些网络的基础知识的.希望能够边读书边在这里记录笔记,便于加深理解以及日后查阅. 一.TCP/IP协议族 计算机与网络设备要互相通信,双方必须基 ...
- 【读书笔记】iOS-反溃网络信息改善用户体验
一,iOS6表视图刷新控件的使用. 二,使用等待指示器控件. 三,使用网络等待指示器. 四,使用MBProgressHUD等待指示器. 参考资料:<iOS网络编程与云端应用-最佳实践>
- 【读书笔记】iOS-访问网络
iOS平台是按照一直有网络连接的思路来设计的,开发者利用这一特点创造了很多优秀的第三方应用.大多数的iOS应用都需要联网,甚至有些应用严重依赖网络,没有网络就无法正常工作. "在访问网络失败 ...
- 《python核心编程》读书笔记--第16章 网络编程
在进行网络编程之前,先对网络以及互联网协议做一个了解. 推荐阮一峰的博客:(感谢) http://www.ruanyifeng.com/blog/2012/05/internet_protocol_s ...
- 深入理解linux网络技术内幕读书笔记(九)--中断与网络驱动程序
Table of Contents 1 接收到帧时通知驱动程序 1.1 轮询 1.2 中断 2 中断处理程序 3 抢占功能 4 下半部函数 4.1 内核2.4版本以后的下半部函数: 引入软IRQ 5 ...
- OCA读书笔记(6) - 配置Oracle网络环境
6.Configuring the Oracle Network Environment su - grid装grid时自动创建了监听netca--创建新的监听 vi $ORACLE_HOME/net ...
- TCP/IP协议原理与应用笔记13:底层网络技术之传输介质
1. 有线介质----导线管(导向媒体) • 双绞线 Twisted-pair cable • 同轴电缆 Coaxial cable 金属铜导线,电流 • 光纤 Fiber-optic cable ...
- 读书笔记--用Python写网络爬虫01--网络爬虫简介
Wiki - Web crawler 百度百科 - 网络爬虫 1.1 网络爬虫何时使用 用于快速自动地获取网络信息,避免重复性的手工操作. 1.2 网络爬虫是否合法 网络爬虫目前人处于早期的蛮荒阶段, ...
- 读书笔记--用Python写网络爬虫02--数据抓取
抓取(scraping)---爬虫从网页中抽取一些数据用以实现某些用途. 三种抽取网页数据的方法:正则表达式.Beautiful Soup和lxml. 2.1 分析网页 通过浏览器自带选项,查看网页源 ...
随机推荐
- .NET魔法堂:工程构建基石->MSBuild
一.前言 MSBuild是一个既熟悉又陌生的名字,Visual Studio的项目加载和构建均通过MSBuild来实现.VS中右键打开项目菜单,对应MSBuild的Build目标,对应MSBuild的 ...
- 【Swift学习】Swift编程之旅---方法(十五)
在Swift中结构体和枚举也能够定义方法,而在 Objective-C 中,类是唯一能定义方法的类型. 实例方法 实例方法是属于某个特定类.结构体或者枚举类型实例的方法,实例方法提供访问和修改实例属性 ...
- PHP的反射机制
在面向对象中最经典的使用就是反射,之前在Java语言中,使用反射可以解耦,用于依赖注入. 在PHP中,同样也有如此强大的地方,我们利用反射来获取一个对象的实例. 首先我们先写一个类: class Te ...
- java继承的对象中构造函数的调用顺序
建立两个继承关系的对象 public class Machine { public String machieNameString; public Machine() { System.out.pri ...
- HTML的checkbox和radio的美化
checkbox和radio的美化 checkbox: <style type="text/css"> input[type="checkbox"] ...
- 【C#】VS2015开发环境的安装和配置(二)2016-08-03更新
分类:C#.VS2015.WPF.ASP.NET MVC.Android.iOS.Unity3D: 更新日期:2016-08-03 按下面介绍的步骤安装即可. 一.安装JDK和Android SDK ...
- Hello, Android 快速入门
Hello, Android Android 开发与 Xamarin 简介 在这两节指南中,我们将 (使用 Xamarin Studio或 Visual Studio)建立我们的第一个 Xamarin ...
- thinkphp中assign()和display()区别和用法
- Android使用SAX解析XML(4)
util.java文件如下: package com.hzhi.my_sax; import java.io.IOException; import java.io.InputStream; impo ...
- java必看书籍
Java核心技术 卷1 基础知识(第9版)Java核心技术 卷II 高级特性(第9版) 数据库系统概念(原书第6版)Oracle 从入门到精通MySQL数据库应用从入门到精通 Java并发编程实战(第 ...