iOS 网络栈

2019-11-15  本文已影响0人  羽裳有涯

前言

理解iOS网络栈和应用如何与运行循环交互


BSD:而是类UNIX操作系统中的一个分支的总称

Apple建议我们使用CFNetwork层以及其之上,BSD层的原始socket无法访问系统范围的VPN,也无法激活Wi-Fi 和蜂窝网络,这些CFNetwork以及处理好了。

Game Kit

Game Kit 在iOS应用提供了另一个点到点的网络选择。 在不需要socket配置或任何其它底层网络就可以实现点之间的通信。Game kit 通过GKSessionDelegate 协议进行通信。
GameKit框架详细解析(二) —— iOS的Game Center:构建基于回合制的游戏(一)

Bonjour

是Apple对零配置(zeroconf)网络的实现。提供一种机制,可以检测并与网络中的设备或服务进行连接,同时无须了解设备的网络地址。

Zeroconf全称为Zero configuration networking,中文名则为零配置网络服务规范,是一种用于自动生成可用IP地址的网络技术,不需要额外的手动配置和专属的配置服务器。

“零配置网络服务”的目标,是让非专业用户也能便捷的连接各种网络设备,例如计算机,打印机等。整个搭建网络的过程都是通过程式自动化实现。如果没有zeroconf,用户必须手动配置一些服务,例如DHCP、DNS,计算机网络的其他设置等。这些对非技术用户和新用户们来说是很难的事情。

使用例子来形象地说明:
用户拥有一台apple tv和一台iPhone4s,那之只要都连入到同一个无线局域网内,iphone4s就会自动找出apple tv,那么在播放音乐或者视频时候,用户只要点击推送,就可以讲音乐和视频推送到apple tv上播放。

NSStream

NSStream 是Cocoa级别API,构建在CFNetwork之上,完成底层网络任务。
NSStream 在NSURLConnection 提供了一种机制,本地与远程服务器进行通信。

CFNetwork

CFNetwork API位于基础的 BSD socket 之上,用在 NSStream、URL加载系统、

BSD socket

BSD socket 构成了大多数 Internet 活动的基础,是网络框架层次体系中的最底层。

运行循环

运行循环是有类 NSRunLoop 表示的,有些线程可以让操作系统唤醒睡眠的线程以管理到来的事件,而运行循环是这些线程的基础组件。运行循环可以在一个周期内调度任务并处理到来的事件。iOS应用中的每个线程最多只有一个运行循环。对于主线程来说,运行循环会为你开始,在didFinishLaunchingWithOptions 方法后就可以访问了。
。。。。

运行循环模式

上一篇 下一篇

猜你喜欢

热点阅读