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. C、C++打包成.dll .so .a 给Unity使用

    C.C++打包成.dll .so .a 给Unity使用 打包.dll库 工具:VS 使用VS新建项目 选择不大于.NET3.5的版本 选择Visual C++ -> Win32 控制台应用程序 ...

  2. [原创]K8飞刀 新增Acunetix WVS 远程漏洞 反制黑客

    工具: K8飞刀20150603组织: K8搞基大队[K8team]作者: K8拉登哥哥博客: http://qqhack8.blog.163.com发布: 2015/6/3 20:41:29 简介: ...

  3. awk将某个字段按照分隔符分割之后统计次数

    cat label_movie2|grep BBD252CC0A4FE7D10C990261D5CEACB5|awk -F "," '{for(i=2;i<NF;i++) p ...

  4. 我的Git教程 之 解决 git clone后无代码

    解决 git clone 后无代码 前言:这个教程只适用于像我一样大致理解Git的原理,但是不太记得住Git命令的同学使用.所以具体原理只会提一下,具体可以参见Pro Git. 在另一篇 简明的教程  ...

  5. 【从0到1学Web前端】CSS定位问题二(float和display的使用) 分类: HTML+CSS 2015-05-28 22:03 812人阅读 评论(1) 收藏

    display 属性规定元素应该生成的框的类型. 这个属性用于定义建立布局时元素生成的显示框类型.对于 HTML 等文档类型,如果使用 display 不谨慎会很危险,因为可能违反 HTML 中已经定 ...

  6. 如何自定义Tomcat Realm实现我们的用户认证需求

    导读 Tomcat对于J2EE或Java web开发者而言绝不陌生,但说到Realm,可能有些人不太清楚甚至没有听说过,那么到底什么是Realm?简单一句话就是:Realm是Tomcat中为web应用 ...

  7. Doxygen自动文档生成工具在Eclipse中的集成及使用举例

    你有为软件编写说明文档的苦恼吗?当别人甩给你一个庞大的系统,让你根据里面的代码注释理解后写出一份完整的开发文档,你会怎么办?一个个的看代码 然后耗时N天来写吗?这既是一份苦差事也极其耗时,有没有更好的 ...

  8. linux weblogic 控制台进入缓慢

    实际是JVM在Linux下的bug 他想调用一个随机函数 但取不到 暂时的解决办法是 1)较好的解决办法: 在Weblogic启动参数里添加 “- Djava.security.egd=file:/d ...

  9. PHP算法------排序

    <?php/** * Created by PhpStorm. * User: 63448 * Date: 2018/5/5 * Time: 22:42 */$arr = [3,1,13,5,7 ...

  10. sql2005 新加的函数 row_number ()

    1:数据表 2:问题:查询各个部门的最低工资的userid号 select a.* from (select ROW_NUMBER() over(partition by dept order by ...