资源描述:
《谈谈iOS网络编程之socket编程技术及应用》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、谈谈iOS网络编程之socket编程技术及应用摘要提到网络编程,大家不得不提到一套网络编程的书*TCP/P网络协议丫三卷书,之前在工作的吋,花了20块钱,买了一套盗版的.看了前两卷,后一卷实在是太晦涩难懂了,就没看了,第三卷主要讲的是底层具体实现的原理•如果只是想了解下基木知识的,可以阅读下第一卷关于协议的讲解,这一卷讲的非常好,如果想研究的深入的话,可以再读读第二卷,第三卷.如果真的想在网络编程研究的深入的话,这套书是必须看的,这本书由浅入深,知识点原理讲的都非常好.那么今犬就给大家來探究探究在iOS中socket
2、编程是什么形式的?在正式讲解Z前,思考这样几个问题.1.什么是socket编程?2.socket的分类有哪些?3.socket编程的流程是什么?4.socket与HTTP有什么不一样的地方?5.iOS使用的socket框架有哪些?6.为什么要选择AsyncSocket?7.CFSocket提供了哪些接口?8•如何进行socket编程的?9.AsyncSockct的优点?iozAsyncSocket工作过程?只有明白这些概念,才能更好的去理解socket运用的场景.现在我们对上面的问题进行一个一个来进行解释.1・什么是so
3、cket编程?套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程屮端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程捉供并发服务的问题。多个TCP连接或多个应用程序进程可能需耍通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了套接字(Sock
4、et)接口。应用层可以和传输层通过Socket接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。如果对tcp的四层结构不了的,自己去口度查资料.2•常用的socket类型有哪些?常用的Socket类型冇两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。3.socket编程的流程是什么?这里的流程我们要分为两个部分
5、:1)tcpSocket流程2)UDPSocket流程这两种他们的流程图是不一样•下面我们分别来看一下/也们的各自的流程图.1)tcpSocket流程首先來看一下TCPSocke客户一服务器程序设让基本框架2)UDPSocket流程大家仔细看图有没有发现,不管是tcpSocket还是UDPSocket,都是三次握手,服务都是有8个函数,客户端5个函数.那么这些函数有什么用呢,卜來來给大家介绍一下,这些函数.1)创建套接字Socket(afztypc,protocol)2)建立地址和套接字的联系bind(sockid,lo
6、caladdr,addrlen)3)服务器端侦听客户端的请求1istefl(Sockid,quenlen)4)建立服务器/客户端的连接(面向连接TCP)客户端请求连接Connect(sockidrdestaddr,addrlen)5服务器端等待从编号为Sockid的Socket上接收客户连接请求newsockid=accept(Sockid,Clientaddr,paddrlen)6•发送/接收数据血向连接:send(sockid,buff,bufflen)recv()7•面向无连接:sendto(sockid,buff
7、,•••,addrlen)recvfrom()8•释放套接字close(sockid)用到的函数大致就是这些,底层的C语言写法.4.socket与HTTP有什么不一样的地方?由于通常情况下Socket连接就是TCP连接,因此Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开。但在实际网络应用屮,客户端到服务器之间的通信往往需要穿越多个中间节点,例如路由器、网关、防火墙等,大部分防火墙默认会关闭长吋间处于非活跃状态的连接而导致Socket连接断连,因此需要通过轮询告诉网络,该连接处于活跃状态。而H
8、TTP连接使用的是〃请求一响应〃的方式,不仅在请求时需耍先建立连接,而冃需耍客户端向服务器发出请求后,服务器端才能回复数据。很多情况下,需要服务器端主动向客户端推送数据,保持客户端与服务器数据的实吋与同步。此时若双方建立的是Socket连接,服务器就可以宜接将数据传送给客户端;若双方建立的是HTTP连接,则服务器需要