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. WebSocket集成XMPP网页即时通讯1:Java Web Project服务端/客户端Jetty9开发初探

    Web 应用的信息交互过程通常是客户端通过浏览器发出一个请求,服务器端接收和审核完请求后进行处理并返回结果给客户端,然后客户端浏览器将信息呈现出来,这种机制对于信息变化不是特别频繁的应用尚能相安无事, ...

  2. elasticsearch5.6.3插件部署

    需要注意的是,5.x和2.x插件方面改动很大.参考:https://www.elastic.co/blog/running-site-plugins-with-elasticsearch-5-0.因为 ...

  3. python--使用pickle序列化对象

    pickle序列化对象 如果希望透明地存储 Python 对象,而不丢失其身份和类型等信息,则需要某种形式的对象序列化:它是一个将任意复杂的对象转成对象的文本或二进制表示的过程. 同样,必须能够将对象 ...

  4. 不能将 CHECK_POLICY 和 CHECK_EXPIRATION 选项设为 OFF (关)

    数据库用户信息死活无法修改..老是出现错误当 MUST_CHANGE 为 ON (开)时,不能将 CHECK_POLICY 和 CHECK_EXPIRATION 选项设为 OFF (关). (Micr ...

  5. 关于Mybatis中Mapper是使用XML还是注解的一些思考

    XML 据说可以灵活的进行注解,但是修改以后还是要重新发布程序.当然,你可以说,在Tomcat中改了,然后热加载了,不就可以了.可是一般情况下都是几台,十几台服务器.都是用发布系统,持续集成的方式部署 ...

  6. idea 安装mybatis plugin (mybatis插件)

    注意:可以用免费版本的,就是下面没有 被红框圈中的 Free Mybatis Plugin 安装上以后需要破解,先找到下面的文件 打开文件,设置其中的key 和 value : 这里面的key 和 v ...

  7. winform计算文本的所占的像素长度

    /// <summary> /// 计算文本的宽度 /// </summary> /// <param name="str"></para ...

  8. 六、CLR下的托管代码应用程序与非托管代码程序之间的性能对比

    1.托管程序二次编译的问题,以及微软做的优化 五.CLR加载程序集代码时,JIT编译器对性能的产生的影响中介绍了CLR下托管应用程序的二次编译对性能产生的影响.事实上,在IL编译成本机代码的时候的时候 ...

  9. 手把手教你整合最优雅SSM框架

    我们看招聘信息的时候,经常会看到这一点,需要具备 SSM 框架的技能, SpringMVC 可以完全替代 Struts,配合注解的方式,编程非常快捷,而且通过 restful 风格定义 url,让地址 ...

  10. JSPatch动态更新APP

    JSPatch,只需在项目中引入极小的引擎,就可以使用JavaScript调用任何Objective-C的原生接口,获得脚本语言的能力:动态更新APP,替换项目原生代码修复bug. 用途 是否有过这样 ...