談谈iOS网络编程之socket编程技术及应用.docVIP

談谈iOS网络编程之socket编程技术及应用.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

df9v4fzI + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档