- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
談谈iOS网络编程之socket编程技术及应用
谈谈iOS网络编程之socket编程技术及应用
摘要
提到网络编程,大家不得不提到一套网络编程的书[*TCP/IP网络协议]*三卷书,之前在 工作的时,花了20块钱,买了一套盗版的.看了前两卷,后一卷实在是太晦涩难懂了,就没看了,第三卷主要讲的是底层具体实现的原理.如果只是想了解下基本 知识的,可以阅读下第一卷关于协议的讲解,这一卷讲的非常好,如果想研究的深入的话,可以再读读第二卷,第三卷.
?
如果真的想在网络编程研究的深入的话,这套书是必须看的,这本书由浅入深,知识点原理讲的都非常好.
那么今天就给大家来探究探究在iOS中socket编程是什么形式的?在正式讲解之前,思考这样几个问题.
只有明白这些概念,才能更好的去理解socket运用的场景.现在我们对上面的问题进行一个一个来进行解释.
1.什么是socket编程?
套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。
?
应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了套接字(Socket)接口。应 用层可以和传输层通过Socket接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。
2.常用的socket类型有哪些?
常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。
流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。
3.socket编程的流程是什么?
这里的流程我们要分为两个部分:1) tcpSocket流程2) UDPSocket流程这两种他们的流程图是不一样.下面我们分别来看一下,他们的各自的流程图.
1) tcpSocket流程
2) UDPSocket流程
大家仔细看图有没有发现,不管是tcpSocket还是UDPSocket,都是三次握手,服务都是有8个函数,客户端5个函数.那么这些函数有什么用呢,下来来给大家介绍一下,这些函数.
1)创建套接字
2)建立地址和套接字的联系
3)服务器端侦听客户端的请求
4)建立服务器/客户端的连接 (面向连接TCP)
5 服务器端等待从编号为Sockid的Socket上接收客户连接请求
6.发送/接收数据
7.面向无连接:
8.释放套接字
用到的函数大致就是这些,底层的C语言写法.
4.socket与HTTP有什么不一样的地方?
由于通常情况下Socket连接就是TCP连接,因此Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开。但在实际网络 应用 中,客户端到服务器之间的通信往往需要穿越多个中间节点,例如路由器、网关、防火墙等,大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致 Socket 连接断连,因此需要通过轮询告诉网络,该连接处于活跃状态。
而HTTP连接使用的是“请求—响应”的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据。
很多情况下,需要服务器端主动向客户端推送数据,保持客户端与服务器数据的实时与同步。此时若双方建立的是Socket连接,服务器就可以直接将数据 传送给 客户端;若双方建立的是HTTP连接,则服务器需要等到客户端发送一次请求后才能将数据传回给客户端,因此,客户端定时向服务器端发送连接请求,不仅可以 保持在线,同时也是在“询问”服务器是否有新的数据,如果有就将数据传给客户端。
那么iOS中我们要进行socket编程,那么我们使用的框架是什么,系统有没有自带的socket API供我们使用?下面我们就来看看.
5.iOS使用的socket编程的方式有哪些?
第一种: BSD Socket
BSD Socket 是UNIX系统中通用的网络接口,它不仅支持各种不同的网络类型,而且也是一种内部进程之间的通信机制。而iOS系统其实本质就是UNIX,所以可以用,但是比较复杂。
第二种:CFSocket
CFSocket是苹果提供给我们的使用Socket的方式,但是用起来还是会不太顺手。当然想使用的话,可以细细
文档评论(0)