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实现设备间通信的更多相关文章

  1. 【读书笔记】iOS网络-使用Game Kit实现设备间通信

    Apple的Game Kit框架可以实现没有网络状况下的设备与设备之间的通信,这包括没有蜂窝服务,无法访问Wi-Fi基础设施以及无法访问局域网或Internet等情况.比如在丛林深处,高速公路上或是建 ...

  2. 《android开发进阶从小工到专家》读书笔记--HTTP网络请求

    No1: 客户端与服务器的交互流程: 1)客户端执行网络请求,从URL中解析出服务器的主机名 2)将服务器的主机名转换成服务器的IP地址 3)将端口号从URL中解析出来 4)建立一条从客户端与Web服 ...

  3. 读书笔记_python网络编程3_(3)

    3.TCP:传输控制协议 第一个版本在1974年定义,建立在网际层协议(IP)提供的数据包传输技术之上.TCP使程序可以使用连续的数据流进行相互通信. 除非网络原因导致连接中断/冻结,TCP都能保证将 ...

  4. [读书笔记]iOS 7 UI设计 对比度

    好久没写随笔了,最近在读<iOS 7 byTutorials>,很不错,推荐给大家. 每一个好的程序员也都是一个设计师,不懂设计的程序员不是好的CTO.哈哈,开个小玩笑. iOS 7设计的 ...

  5. 读书笔记_python网络编程3(6)

    6.TLS/SSL 6.0. 传输层安全协议(TLS, Transport Layer Security)是如今web上应用最广泛的加密方法了,1999年成为互联网标准.前身是安全套接层(SSL, S ...

  6. 读书笔记_python网络编程3(5)

    5. 网络数据与网络错误 应该如何准备需要传输的数据? 应该如何对数据进行编码与格式化? Py程序需要提供哪些类型的错误? 5.1. 字节与字符串 PC与网卡都支持将字节作为通用传输单元.字节将8比特 ...

  7. 读书笔记_python网络编程3_(2)

    2.UDP 2.0.数据包表示较短的信息,大小通常不会超过几千字节,在浏览器与服务器进行会话/电子邮件客户端与ISP的邮件服务器进行会话时,这些独立而小型的数据包是如何组成会话的呢? 2.0.1.IP ...

  8. 读书笔记_python网络编程3_(1)

    0.前言 代码目录: https://github.com/brandon-rhodes/fopnp/tree/m/py3 0.1.网络实验环境:理解客户端与服务器是如何通过网络进行通信的 每台机器通 ...

  9. 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 ...

随机推荐

  1. python实用库:PrettyTable 学习

    python实用库:PrettyTable 学习 PrettyTable说明 PrettyTable 是python中的一个第三方库,可用来生成美观的ASCII格式的表格,十分实用. 以下为官方介绍: ...

  2. python爬虫在解析不带引号的json报错的问题解决方案

    本例中环境: python3.6.6 demjson-2.2.4 如不看废话请直接看3(下面红体字) 1.近期在爬取代理验证代理的时候发生一个Bug, 就是在验证代理的时候返回的是如下字符串, {ip ...

  3. / | \ # $ ^ & *这些符号怎么读

    供参考: /: slash或forward slash 英 [slæʃ] |: vertical bar或pipe #: number sign或pound sign \: backslash 英 [ ...

  4. FactoryMethod工厂方法模式(创建型模式)

    1.工厂方法模式解决的问题 现在有一个抽象的游戏设施建造系统,负责构建一个现代风格和古典风格的房屋和道路. 前提:抽象变化较慢,实现变化较快(不稳定) 整个抽象的游戏设施建造系统相对变化较慢,本例中只 ...

  5. 多线程编程——ANR

    1.为什么要用多线程 这里列出几个原因: 提高用户体验或者避免ANR:在事件处理代码中需要使用多线程,否则会出现ANR(Application is not responding),或者因为响应较慢导 ...

  6. JLS中表达式的所有文法

    3.8. Identifiers Identifier: IdentifierChars but not a Keyword or BooleanLiteral or NullLiteral Iden ...

  7. 快速选择算法/Select 寻找第k大的数

    参考算法导论9.3节的内容和这位大神的博客:http://blog.csdn.net/v_JULY_v上对这一节内容代码的实现进行了学习 尝试实现了以查找中位数为前提的select算法. 算法功能:可 ...

  8. 利用Django构建web应用及其部署

    注:很久之前就有了学习Django的想法,最近终于有机会做了一次尝试.由于Django的详细教程很多,我在这里就不再详述了,只是将整个开发流程以及自己在学习Django中的一些思考记录在此. Syst ...

  9. localStorage存储对象,sessionStorage存储数组对象

    前言 最近在用angular做商城购物车的功能模块,因为angular的watch监听,数据只要发生变化就能很方便的自动渲染页面.但随即出现的问题是,之前用户操作的样式都会被重置掉. 例如我勾选了几个 ...

  10. 你的网站升级https了吗

    升级 HTTPS,价值何在? HTTPS 实质上是一种面向安全信息通信的协议.从最终的数据解析的角度上看,HTTPS 与 HTTP 没有本质上的区别.对于接收端而言,SSL/TSL 将接收的数据包解密 ...