【读书笔记】iOS网络-使用Game Kit实现设备间通信
Apple的Game Kit框架可以实现没有网络状况下的设备与设备之间的通信,这包括没有蜂窝服务,无法访问Wi-Fi基础设施以及无法访问局域网或Internet等情况。比如在丛林深处,高速公路上或是建筑物的地下室等。
一,Game Kit基础
除了底层的网络通信特性外,Game Kit还包含了一些特定于游戏的技术,比如成就,排行榜和比赛等。
蓝牙虽然具有不依赖于网络基础设施的独特优势,不过也有一些较大的缺陷。32英尺的最大接接范围比Wi-Fi网络小太多了,而后者可以跨越多个访问点来覆盖更大范围。在Wi-Fi网络中,每个端点的可用带宽是蓝牙的将近10倍。虽然蓝牙无线电要比Wi-Fi更省电,但如果所有端点都可以通过这两种类型的访问连接,那么Game Kit依然会首选Wi-Fi,而非蓝牙。虽然只考虑一种连接起来是错误的,不过实际上这会降低设备总体的电量消耗。连接到Wi-Fi网络的iOS设备会使用该连接进行后台的所有数据请求,比如周期性的邮件检查或推送通知等。由于将会使用该无线电,因此同时还使用蓝牙无线电实际上会增加电量消耗。
通过Game Kit会话进行的所有通信都是未加密的。如果数据报的机密对于应用来说是非常重要的,比如,移动付款设备会传输信用卡信息进行注册,那么开发者就要负责在将数据发送给GKSession前对流量进行加密。
二,点对点网络
在点对点Game Kit的连接下,网络中任何端点的行为同是既是服务器又是客户端。在很多情况下,同一台设备会在业务流程的处理过程中,在客户端与服务器角色之间切换,不过可以使用单个P2P连接,而不必重新连接设备来转换为新的角色。P2P还非常适合于在流程开始前并不知晓端点角色的流程。
1,连接到会话。
2,向端点发送数据。
1)iOS设备所用的ARM处理器使用的是小端字节序。
大端与小端字节序是表示二进制数据集的两种方式。大端字节序从最重要到最不重要的顺序来存储字节,而小端字节序则正好相反。大端字节序的一个例子就是电话号码,其中数字的分组是从最重要(国家代码)到最不重要(用户号码)排列的。字节序起源于在内存中存储值的硬件实现,标准化网络字节序的目的是防止小端机器在不知道需要转换的情况下不小心解释以大端字节序存储的二进制数据。大端与小端这两个名字起源于Jonathon Swift的小说《格利佛游记》,其中描述了打鸡蛋的两种不同方式。
三,客户端-服务器通信
四,总结
Game Kit在iOS生态系统中占有独特的角色,因为它可以集成蓝牙可以创建附近设备的网络。其Wi-Fi功能是对Bonjour服务的简易封装;然而,其真正的优势在于可以使用相同的代码基来支持两种网络技术。其极具创新性的P2P模型为应用中加入网络提供了空前的灵活性,客户端-服务器模型则为开发者提供了更为熟悉的环境,同时提升了稳定性。
参考资料:《iOS网络高级编程-iPhone和iPad的企业应用开发》
【读书笔记】iOS网络-使用Game Kit实现设备间通信的更多相关文章
- 《android开发进阶从小工到专家》读书笔记--HTTP网络请求
No1: 客户端与服务器的交互流程: 1)客户端执行网络请求,从URL中解析出服务器的主机名 2)将服务器的主机名转换成服务器的IP地址 3)将端口号从URL中解析出来 4)建立一条从客户端与Web服 ...
- 【读书笔记】iOS-网络-使用Game Kit实现设备间通信
Apple的Game Kit框架可以实现没有网络状况下的设备与设备之间的通信,这包括没有蜂窝服务,无法访问Wi-Fi基础设施以及无法访问局域网或Internet等情况.比如在丛林深处,高速公路上或是建 ...
- 读书笔记_python网络编程3_(3)
3.TCP:传输控制协议 第一个版本在1974年定义,建立在网际层协议(IP)提供的数据包传输技术之上.TCP使程序可以使用连续的数据流进行相互通信. 除非网络原因导致连接中断/冻结,TCP都能保证将 ...
- [读书笔记]iOS 7 UI设计 对比度
好久没写随笔了,最近在读<iOS 7 byTutorials>,很不错,推荐给大家. 每一个好的程序员也都是一个设计师,不懂设计的程序员不是好的CTO.哈哈,开个小玩笑. iOS 7设计的 ...
- 读书笔记_python网络编程3(6)
6.TLS/SSL 6.0. 传输层安全协议(TLS, Transport Layer Security)是如今web上应用最广泛的加密方法了,1999年成为互联网标准.前身是安全套接层(SSL, S ...
- 读书笔记_python网络编程3(5)
5. 网络数据与网络错误 应该如何准备需要传输的数据? 应该如何对数据进行编码与格式化? Py程序需要提供哪些类型的错误? 5.1. 字节与字符串 PC与网卡都支持将字节作为通用传输单元.字节将8比特 ...
- 读书笔记_python网络编程3_(2)
2.UDP 2.0.数据包表示较短的信息,大小通常不会超过几千字节,在浏览器与服务器进行会话/电子邮件客户端与ISP的邮件服务器进行会话时,这些独立而小型的数据包是如何组成会话的呢? 2.0.1.IP ...
- 读书笔记_python网络编程3_(1)
0.前言 代码目录: https://github.com/brandon-rhodes/fopnp/tree/m/py3 0.1.网络实验环境:理解客户端与服务器是如何通过网络进行通信的 每台机器通 ...
- Node.js高级编程读书笔记 - 3 网络编程
Outline 3.4 构建TCP服务器 3.5 构建HTTP服务器 3.6 构建TCP客户端 3.7 创建HTTP请求 3.8 使用UDP 3.9 用TLS/SSL保证服务器的安全性 3.10 用H ...
随机推荐
- 阅读《LEARNING HARD C#学习笔记》知识点总结与摘要四
又是一个周末,刚好有时间,又继续复习与总结了,希望能让大家受益,不足之处欢迎指正,谢谢! 十八. Lambda 1.Lambda表达式:匿名方法的另一种表现形式,它可以包含表达式和语句,且用于创建委托 ...
- ClojureScript魔法堂:搭建开发环境
一.前言 当看到Lisp等函数式编程语言的语法是 (say (concat "hello" "world")) 这样的时候,我就有种深入学习的冲动,因为它的语法 ...
- position属性absolute与relative 详解
最近一直在研究javascript脚本,熟悉DOM中CSS样式的各种定位属性,以前对这个属性不太了解,从网上找到两篇文章感觉讲得很透彻,收藏下来,唯恐忘记.一.解读absolute与relative ...
- 使用LinkedList模拟一个堆栈或者队列数据结构
使用LinkedList模拟一个堆栈或者队列数据结构. 堆栈:先进后出 如同一个杯子. 队列:先进先出 如同一个水管. import java.util.LinkedList; public cl ...
- 分享一个递归无限级拼接Json的方法---ExtJs的TreePanel和TreeGrid均适用(Ef,Lambda,Linq,IQueryable,List)
话不多说,先上实体类,如果你不是codefirst,就把它当成数据表结构. 下面是底层BaseDal获取数据的方法 (如果你没有Base类,直接写在你的DAL层和BLL层) 下面是BaseServi ...
- c# datetime 格式化
//c datetime 格式化 DateTime dt = DateTime.Now; Label1.Text = dt.ToString();//2005-11-5 13:21:25 Label2 ...
- 一些sql二
1.说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)法一:select * into b from a where 1<>1(仅用于SQlServer)法二:sel ...
- 同样的MVC,不同的实现方法(Spring MVC .Net MVC)
由于工作需要,最近将Net的MVC又重新好好的学习了一遍.学习教材是博客园里的大神的作品<ASP.NET MVC5框架揭秘>. <ASP.NET MVC5框架揭秘>这本书,说了 ...
- Java递归列出所有文件和文件夹
package file_op; import java.io.File; public class file_list { static int n =0; /** * @param args */ ...
- Firemonkey TComboBox 下拉菜单字型修改方法 (D10)
在 FMX 下的 TComboBox 下拉菜单字型修改有二种方法: uses FMX.Pickers; 使用 Style,需先设定好 Style 后,再指定预设项的 Style,方法如下: proce ...