IOSSocket使用大全.pdf
《IOSSocket使用大全.pdf》由会员分享,可在线阅读,更多相关《IOSSocket使用大全.pdf(20页珍藏版)》请在三一文库上搜索。
1、第一部分、概念的理解 1、什么是 Socket ? Socket 又称之为 “ 套接字 ” ,是系统提供的用于网络通信的方法。它的实质并不是一种协议,没有规定计算机 应当怎么样传递消息,只是给程序员提供了一个发送消息的接口,程序员使用这个接口提供的方法,发送 与接收消息。 Socket 描述了一个 IP、端口对。它简化了程序员的操作,知道对方的IP以及 PORT 就可以给对方发送消息, 再由服务器端来处理发送的这些消息。所以,Socket 一定包含了通信的双发,即客户端(Client )与服务端 (server )。 2、Socket 的通信过程? 每一个应用或者说服务,都有一个端口。比如DN
2、S的53 端口, http 的80端口。我们能由DNS请求到查询信 息,是因为 DNS服务器时时刻刻都在监听53 端口,当收到我们的查询请求以后,就能够返回我们想要的IP 信息。所以,从程序设计上来讲,应该包含以下步骤: 1)服务端利用 Socket 监听端口; 2)客户端发起连接; 3)服务端返回信息,建立连接,开始通信; 4)客户端,服务端断开连接。 3、Socket 双方如何建立起连接? 以下过程用代码表示: Server 端: 1 intport = 2000; 2 IPEndPointServerEP = new IPEndPoint(IPAddress.Any,port); 3 S
3、ocketserver = new Socket(AddressFamily.InterNetwork, SocketType.Stream,ProtocolType.Tcp); 4 server.Bind(ServerEP); 5 server.Listen(0); Client 端: 1 intport = 2000; 2 IPAddressserverip = IPAddress.Parse(“192.168.1.100“); 3 IPEndPointEP = new IPEndPoint(server,port); 4 Socketserver = new Socket(Address
4、Family.InterNetwork, SocketType.Stream,ProtocolType.Tcp); 5 server.Bind(EP); 当服务器端接收到来自客户端的连接以后,需要新建一个socket 来处理远端的信息。 下面一段代码应该在服务器端: 1 Socketclient = server.Accept(); 以上很简单的几行代码,将在以后的网络编程中经常用到,后面还会有同步通讯、异步通讯、线程、委托 与事件等等 第二部分、各协议的区别 TCP/IP SOCKET HTTP 网络七层由下往上分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。 其中物理层、
5、数据链路层和网络层通常被称作媒体层,是网络工程师所研究的对象; 传输层、会话层、表示层和应用层则被称作主机层,是用户所面向和关心的内容。 http 协议对应于应用层 tcp 协议对应于传输层 ip协议对应于网络层 三者本质上没有可比性。何况 HTTP 协议是基于 TCP连接的。 TCP/IP 是传输层协议,主要解决数据如何在网络中传输;而HTTP 是应用层协议,主要解决如何包装数 据。 我们在传输数据时,可以只使用传输层(TCP/IP ),但是那样的话,由于没有应用层,便无法识别数据 内容,如果想要使传输的数据有意义,则必须使用应用层协议,应用层协议很多,有HTTP 、FTP 、 TELNET
6、 等等,也可以自己定义应用层协议。WEB 使用 HTTP 作传输层协议,以封装HTTP 文本信息,然后 使用 TCP/IP 做传输层协议将它发送到网络上。 Socket 是对 TCP/IP 协议的封装,Socket 本身并不是协议,而是一个调用接口(API),通过 Socket ,我们才 能使用 TCP/IP 协议。 Http 和Socket 连接区别 相信不少初学手机联网开发的朋友都想知道Http与Socket 连接究竟有什么区别,希望通过自己的浅显理解能 对初学者有所帮助。 1、TCP 连接 要想明白 Socket 连接,先要明白TCP 连接。手机能够使用联网功能是因为手机底层实现了TCP
7、/IP 协议,可 以使手机终端通过无线网络建立TCP 连接。 TCP 协议可以对上层网络提供接口,使上层网络数据的传输建 立在 “ 无差别 ” 的网络之上。 建立起一个 TCP 连接需要经过 “ 三次握手 ” : 第一次握手:客户端发送syn包(syn=j) 到服务器,并进入SYN_SEND 状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1 ),同时自己也发送一个SYN包 (syn=k ),即 SYN+ACK 包,此时服务器进入SYN_RECV 状态; 第三次握手:客户端收到服务器的SYNACK 包,向服务器发送确认包ACK(ack=k+1),此包发
8、送完毕,客 户端和服务器进入ESTABLISHED 状态,完成三次握手。 握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态 下, TCP 连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。断 开连接时服务器和客户端均可以主动发起断开TCP 连接的请求,断开过程需要经过“ 四次握手 ” (过程就不细 写了,就是服务器和客户端交互,最终确定断开) 2、HTTP 连接 HTTP 协议即超文本传送协议(HypertextTransfer Protocol ),是 Web 联网的基础,也是手机联网常用的协议 之一, HTTP
9、协议是建立在 TCP 协议之上的一种应用。 HTTP 连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连 接。从建立连接到关闭连接的过程称为“ 一次连接 ” 。 1)在 HTTP 1.0 中,客户端的每次请求都要求建立一次单独的连接,在处理完本次请求后,就自动释放连 接。 2)在 HTTP 1.1 中则可以在一次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结 束后再发送下一个请求。 由于 HTTP 在每次请求结束后都会主动释放连接,因此HTTP 连接是一种 “ 短连接 ” ,要保持客户端程序的在线 状态,需要不断地向服务器发起连接请求。通
10、常的做法是即时不需要获得任何数据,客户端也保持每隔一 段固定的时间向服务器发送一次“ 保持连接 ” 的请求,服务器在收到该请求后对客户端进行回复,表明知道客 户端 “ 在线 ” 。若服务器长时间无法收到客户端的请求,则认为客户端“ 下线 ” ,若客户端长时间无法收到服务 器的回复,则认为网络已经断开。 3、SOCKET 原理 3.1 套接字( socket )概念 套接字( socket )是通信的基石,是支持TCP/IP 协议的网络通信的基本操作单元。它是网络通信过程中端 点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议 端口,远地主机的IP地
11、址,远地进程的协议端口。 应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP 连接或多个应用程序进程可能需要通过同一个 TCP 协议端口传输数据。为了区别不同的应用程序进程和连 接,许多计算机操作系统为应用程序与TCP IP协议交互提供了套接字(Socket) 接口。应用层可以和传输层 通过 Socket 接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。 3.2 建立 socket 连接 建立 Socket 连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket ,另一个运行于服务器 端,称为 Serve
12、rSocket。 套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。 服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状 态,等待客户端的连接请求。 客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接 字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套 接字提出连接请求。 连接确认:当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,就响应客户端套接字的请 求,建立一个新的线程,把服务器端套接字的描述发给客户端,一旦客户端确认了此描述,双方就正
13、式建 立连接。而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。 4、SOCKET 连接与 TCP 连接 创建 Socket 连接时,可以指定使用的传输层协议,Socket 可以支持不同的传输层协议(TCP 或UDP),当 使用 TCP 协议进行连接时,该Socket 连接就是一个 TCP 连接。 5、Socket 连接与 HTTP 连接 由于通常情况下Socket 连接就是 TCP 连接,因此 Socket 连接一旦建立,通信双方即可开始相互发送数据内 容,直到双方连接断开。但在实际网络应用中,客户端到服务器之间的通信往往需要穿越多个中间节点, 例如路由器、网关、防火墙等
14、,大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致 Socket 连接 断连,因此需要通过轮询告诉网络,该连接处于活跃状态。 而HTTP 连接使用的是 “ 请求响应 ” 的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出 请求后,服务器端才能回复数据。 很多情况下,需要服务器端主动向客户端推送数据,保持客户端与服务器数据的实时与同步。此时若双方 建立的是 Socket 连接,服务器就可以直接将数据传送给客户端;若双方建立的是HTTP 连接,则服务器需要 等到客户端发送一次请求后才能将数据传回给客户端,因此,客户端定时向服务器端发送连接请求,不仅 可以保持在线,同时也是在“ 询
15、问 ” 服务器是否有新的数据,如果有就将数据传给客户端。 HTTP 连接是什么意思 HTTP 是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它 于1990 年提出,经过几年的使用与发展,得到不断地完善和扩展。目前在WWW 中使用的是 HTTP/1.0 的第 六版, HTTP/1.1 的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出. (协议,算是全球定位!) WWW 的核心 HTTP 协议 众所周知, Internet 的基本协议是 TCP/IP 协议,目前广泛采用的FTP 、Archie Go
16、pher等是建立在 TCP/IP 协 议之上的应用层协议,不同的协议对应着不同的应用。WWW 服务器使用的主要协议是HTTP 协议,即超文 体传输协议。由于HTTP 协议支持的服务不限于WWW ,还可以是其它服务,因而HTTP 协议允许用户在统一 的界面下,采用不同的协议访问不同的服务,如FTP 、Archie 、SMTP 、NNTP 等。另外, HTTP 协议还可用 于名字服务器和分布式对象管理。 2.1 HTTP 协议简介 HTTP 是一个属于应用层的面向对象的协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。它 于1990 年提出,经过几年的使用与发展,得到不断地完善和扩展。目前
17、在WWW 中使用的是 HTTP/1.0 的第 六版, HTTP/1.1 的规范化工作正在进行之中,而且HTTP-NG(Next Generation of HTTP)的建议已经提出。 HTTP 协议的主要特点可概括如下: 1.支持客户 /服务器模式。 2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET 、HEAD, POST 。每种方法规定了客户与服务器联系的类型不同。由于 HTTP 协议简单,使得HTTP 服务器的程序规 模小,因而通信速度很快。 3.灵活: HTTP 允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。 4.无连接
18、:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答 后,即断开连接。采用这种方式可以节省传输时间。 5.无状态: HTTP 协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后 续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器 不需要先前信息时它的应答就较快。 2.2 HTTP 协议的几个重要概念 1.连接 (Connection):一个传输层的实际环流,它是建立在两个相互通讯的应用程序之间。 2.消息 (Message) :HTTP 通讯的基本单位,包括一个结构化的八元组序列并通过连接传输
19、。 3.请求 (Request) :一个从客户端到服务器的请求信息包括应用于资源的方法、资源的标识符和协议的版本 号 4.响应 (Response) :一个从服务器返回的信息包括HTTP 协议的版本号、请求的状态(例如 “ 成功” 或“ 没找到 ”) 和文档的 MIME类型。 5.资源 (Resource) :由 URI标识的网络数据对象或服务。 6.实体 (Entity) :数据资源或来自服务资源的回映的一种特殊表示方法,它可能被包围在一个请求或响应信 息中。一个实体包括实体头信息和实体的本身内容。 7.客户机 (Client) :一个为发送请求目的而建立连接的应用程序。 8.用户代理 (U
20、ser agent):初始化一个请求的客户机。它们是浏览器、编辑器或其它用户工具。 9.服务器 (Server) :一个接受连接并对请求返回信息的应用程序。 10. 源服务器 (Origin server):是一个给定资源可以在其上驻留或被创建的服务器。 11. 代理 (Proxy) :一个中间程序,它可以充当一个服务器,也可以充当一个客户机,为其它客户机建立请 求。请求是通过可能的翻译在内部或经过传递到其它的服务器中。一个代理在发送请求信息之前,必须解 释并且如果可能重写它。 代理经常作为通过防火墙的客户机端的门户,代理还可以作为一个帮助应用来通过协议处理没有被用户代 理完成的请求。 12.
21、 网关 (Gateway) :一个作为其它服务器中间媒介的服务器。与代理不同的是,网关接受请求就好象对被 请求的资源来说它就是源服务器;发出请求的客户机并没有意识到它在同网关打交道。 网关经常作为通过防火墙的服务器端的门户,网关还可以作为一个协议翻译器以便存取那些存储在非HTTP 系统中的资源。 13. 通道 (Tunnel) :是作为两个连接中继的中介程序。一旦激活,通道便被认为不属于HTTP 通讯,尽管通道 可能是被一个HTTP 请求初始化的。当被中继的连接两端关闭时,通道便消失。当一个门户(Portal) 必须存在 或中介 (Intermediary)不能解释中继的通讯时通道被经常使用。
22、 14. 缓存 (Cache) :反应信息的局域存储。 2.3 HTTP 协议的运作方式 HTTP 协议是基于请求响应范式的。一个客户机与服务器建立连接后,发送一个请求给服务器,请求方式 的格式为,统一资源标识符、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。 服务器接到请求后,给予相应的响应信息,其格式为一个状态行包括信息的协议版本号、一个成功或错误 的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。 许多 HTTP 通讯是由一个用户代理初始化的并且包括一个申请在源服务器上资源的请求。最简单的情况可能 是在用户代理(UA)和源服务器 (O) 之间通过一个
23、单独的连接来完成(见图 2-1) 。 当一个或多个中介出现在请求响应链中时,情况就变得复杂一些。中介由三种:代理(Proxy) 、网关 (Gateway) 和通道 (Tunnel) 。 一个代理根据URI的绝对格式来接受请求,重写全部或部分消息,通过URI的标识把已格式化过的请求发送 到服务器。 网关是一个接收代理,作为一些其它服务器的上层,并且如果必须的话,可以把请求翻译给下层的服务器 协议。 一个通道作为不改变消息的两个连接之间的中继点。当通讯需要通过一个中介(例如:防火墙等)或者是中介 不能识别消息的内容时,通道经常被使用。图2-2 上面的图 2-2 表明了在用户代理(UA)和源服务器
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IOSSocket 使用 大全
链接地址:https://www.31doc.com/p-5012162.html