一,网络结构。

1,客户端服务器网络结构。

客户端服务器网络结构是一种主从网络结构。服务器是被动的,有点像餐厅的服务员。而客户端是主动的,像在餐厅吃饭的顾客。

2,对等网络结构。

对等网络也叫点对点网络。每个节点之间是对等的。

对等网络结构分布范围比较小。通常在一间办公室或一个家庭内,因此它非常适合iOS设备间的网络通信,网线路链路层是由蓝牙和WiFi实现。iOS SDK提供了这方面的API供开发者使用。

二,基于Socket的C/S结构网络通信。

1,Socket概念。

Socket是网络上的两个程序,通过一个双向的通信连接,实现数据的交换。这个双向链路的一端称为一个Socket.Socket通常用于实现客户方和服务方的连接。Socket是TCP/IP协议的一个十分流行的编程接口,一个Socket由一个IP地址和一个端口号唯一确定。

我们把Socket编程叫做“低层次网络编程”。

Socket采用TCP/IP协议模型。TCP/IP协议的传输层又有两种传输协议:TCP(传输控制协议)和UDP(用户数据协议).TCP是基于连接的,而UDP是无连接的;TCP对系统资源的要求较多,而UDP少。TCP保证数据正确性而UDP可能丢包;TCP保证数据顺序而UDP不保证。

2,Socket编程。

客户端流程是先指定要通信的服务器IP地址,端口和采用的传输协议(TCP或UDP),向服务器发出连接请求,服务器有应答请求之后,就会建立连接,之后与服务器端是一样的。

Socket编程是一种网络编程的标准,客户端和服务器端可以不受编程语言的限制,完全自由通信。客户端可以是Object-C编写的iOS程序,服务器端可以是Java编写的程序,通信双方定义好数据交互格式就可以了。

3,实例:NSStream&CFStream实现TCP Socket服务器端。

4,实例:NSStream&CFStream实现TCP Socket客户端。

三,Bonjour服务发现。

Socket有一个问题,需要指定服务器的端口和IP地址。在有些情况下,获得服务器的这些信息是很困难的。苹果公司开发了一种零配置发现协议,命名为Bonjour(法语“你好”),使我们的尖用不必指定服务器端口和IP地址就可以动态发现。

1,发布服务

2,解析服务

3,查找服务

4,实例:基于服务发现的Socket通信服务器端。

5,实例:基于服务发现的Socket 通信客户端。

四,对等网络结构。

对等网络结构是苹果公司的Ad Hoc网络的一种,在小空间里构建无限网络的解决方案。苹果公司在Game Kit框架中提供了开发这种网络的API。

1,使用Game Kit开发对等结构网络应用。

在iOS3之后,苹果公司提供了用于自己游戏中心开发的API,这就是Game Kit框架。在新发布的iOS6中,苹果公司地Game Kit进行了比较大的调整。借助于Game Kit中的对等网络,API不仅可以开发基于Ad Hoc的网络游戏,也可以在其他类型的应用中使用这些API。

基于蓝牙连接的对等网络在数据传输是,传输的距离有限制,另外Game Kit对于传输的数据量也有一定的限制,数据量最大不能超过87KB,处于性能的考虑传输数据不要超过1000字节,如果超过,分割成几个数据包传输。

2,实例:基于蓝牙对等网络通信。

参考资料:《iOS网络编程与云端应用-最佳实践》

【读书笔记】iOS-苹果的网络的更多相关文章

  1. 《图解HTTP》读书笔记(一:网络基础TCP/IP)

    好书什么时候开始读都不晚.作为一个测试人员,是一定要掌握一些网络的基础知识的.希望能够边读书边在这里记录笔记,便于加深理解以及日后查阅. 一.TCP/IP协议族 计算机与网络设备要互相通信,双方必须基 ...

  2. 【读书笔记】iOS-访问网络

    iOS平台是按照一直有网络连接的思路来设计的,开发者利用这一特点创造了很多优秀的第三方应用.大多数的iOS应用都需要联网,甚至有些应用严重依赖网络,没有网络就无法正常工作. "在访问网络失败 ...

  3. 【读书笔记】iOS-反溃网络信息改善用户体验

    一,iOS6表视图刷新控件的使用. 二,使用等待指示器控件. 三,使用网络等待指示器. 四,使用MBProgressHUD等待指示器. 参考资料:<iOS网络编程与云端应用-最佳实践>

  4. 《python核心编程》读书笔记--第16章 网络编程

    在进行网络编程之前,先对网络以及互联网协议做一个了解. 推荐阮一峰的博客:(感谢) http://www.ruanyifeng.com/blog/2012/05/internet_protocol_s ...

  5. 深入理解linux网络技术内幕读书笔记(九)--中断与网络驱动程序

    Table of Contents 1 接收到帧时通知驱动程序 1.1 轮询 1.2 中断 2 中断处理程序 3 抢占功能 4 下半部函数 4.1 内核2.4版本以后的下半部函数: 引入软IRQ 5 ...

  6. OCA读书笔记(6) - 配置Oracle网络环境

    6.Configuring the Oracle Network Environment su - grid装grid时自动创建了监听netca--创建新的监听 vi $ORACLE_HOME/net ...

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

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

  8. 读书笔记--用Python写网络爬虫01--网络爬虫简介

    Wiki - Web crawler 百度百科 - 网络爬虫 1.1 网络爬虫何时使用 用于快速自动地获取网络信息,避免重复性的手工操作. 1.2 网络爬虫是否合法 网络爬虫目前人处于早期的蛮荒阶段, ...

  9. 读书笔记--用Python写网络爬虫02--数据抓取

    抓取(scraping)---爬虫从网页中抽取一些数据用以实现某些用途. 三种抽取网页数据的方法:正则表达式.Beautiful Soup和lxml. 2.1 分析网页 通过浏览器自带选项,查看网页源 ...

  10. 读书笔记-iOS核心动画高级技巧

    如果不使用+imageNamed:,那么把整张图片绘制到CGContext可能是最佳的方式了. 这里我们利用了CALayer的KVC来存储和检索任意的值,将图层和索引打标签. 使用KVC打标签

随机推荐

  1. 利用getBoundingClientRect方法实现简洁的sticky组件

    补充于2016-03-20: 本文实现有不足,不完美的地方,请在了解本文相关内容后,移步阅读<sticky组件的改进实现>了解更佳的实现. sticky组件,通常应用于导航条或者工具栏,当 ...

  2. C#中是否可以继承String类

    C#中是否可以继承String类? 答:String类是sealed类故不可以继承. 当对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承. 在下面的示例中,类 HoverTree ...

  3. 如何将CKeditor编辑器的上传和thinkphp结合

    转载:THINKPHP代码中 lxepoo的文章 有时候我们会发现,我们需要对上传文件进行日志记录,这样的记录通常写在LOG文件或数据库中,那么,通过TP本身的上传类,可以实现的,但是只能做到编辑器外 ...

  4. C#的变迁史 - C# 1.0篇

    C#与.NET平台诞生已有10数年了,在每次重大的版本升级中,微软都为这门年轻的语言添加了许多实用的特性,下面我们就来看看每个版本都有些什么.老实说,分清这些并没什么太大的实际意义,但是很多老资格的. ...

  5. 为什么很多APP要有启动页面

    我们启动APP时,一般都会是一张含有LOGO的图片.这张图片叫做启动页面. 这个启动页面是必须.一定需要的吗?有什么作用?   这是苹果官方对于iOS启动页的设计说明:   为了增强应用程序启动时的用 ...

  6. 不可或缺 Windows Native (19) - C++: 对象的动态创建和释放, 对象的赋值和复制, 静态属性和静态函数, 类模板

    [源码下载] 不可或缺 Windows Native (19) - C++: 对象的动态创建和释放, 对象的赋值和复制, 静态属性和静态函数, 类模板 作者:webabcd 介绍不可或缺 Window ...

  7. 孙鑫MFC学习笔记7:对话框编程(上)

    1.DoModal创建模态对话框 2.Create创建非模态对话框(需要用ShowWindow显示出来) 模态:对话框显示,程序会暂停,直到对话框关闭 非模态:对话框显示,程序继续执行 3.对于模态对 ...

  8. nested exception is org.hibernate.QueryException: could not resolve property

    SSH框架出现了下面的错误: nested exception is org.hibernate.QueryException: could not resolve property 检查了hbm.x ...

  9. 部署Eclipse中的Web项目到Tomcat服务器运行

    用Eclipse开发Web项目时,可以通过Tomcat服务器运行Web项目,此时Web项目被部署在[WorkSpace]\.metadata\.plugins\org.eclipse.wst.serv ...

  10. ActionContext和ServletActionContext区别

    1. ActionContext 在Struts2开发中,除了将请求参数自动设置到Action的字段中,我们往往也需要在Action里直接获取请求(Request)或会话(Session)的一些信息, ...