基于socket的客户机服务器模型

基于socket的客户机服务器模型

ID:33771574

大小:94.18 KB

页数:10页

时间:2019-03-01

基于socket的客户机服务器模型_第1页
基于socket的客户机服务器模型_第2页
基于socket的客户机服务器模型_第3页
基于socket的客户机服务器模型_第4页
基于socket的客户机服务器模型_第5页
资源描述:

《基于socket的客户机服务器模型》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、基于Socket的客户机服务器模型摘要:本论文介绍Socket通信的定义、通信类型及实现原理,Delphi的Socket组件,并通过客户端和服务器端的Delphi编程实例,说明两者是如何进行通信的。关键词:Socket;Delphi;通信;客户端;服务器端0引言大部分网络协议的实现都由客户端(Client)和服务器端(Server)來协作完成°这种模型本质上涉及两个不同的程序,通常这两个程序在不同机器上运行,这些机器之间都有网络连接。服务器端程序提供服务并对来自客户程序的请求作成响应。而客户端程序则是在使用者和服务器端程序Z间建立某种沟通的渠道,或者是作为使用服务器端提供的某种网络服务的

2、工具。一个典型的服务器与客户机之

3、'可的交互可能如下所示:(1)客户机提出一个请求;(2)服务器收到客户机的请求,进行分析处理;(3)服务器将运行处理的结果返回给客户机。通常一个服务器需要向多个客户机提供服务。因此对服务器来说,还需要考虑如何有效地处理多个客户的请求。1Socket通信简介Socket是建立在传输层协议(主要是TCP和UDP)上的一种套接字规范,最初是由美国加州Berkley大学提出的,它定义了两台计算机间进行通信的规范。假设两台计算机是利用一个“通道”进行通信,那么这个“通道”的两端就是两个套接字。套接字屏蔽了底层通信软件和具体操作系统的差异,使得任何两台安装了TCP协

4、议软件和实现了套接字规范的计算机之间的通信成为可能。Socket又称套接字,在程序内部提供了与外界通信的端口,即端口通信。Socket通信,在双方建立起连接后就可以直接进行数据的传输,在连接时可实现信息的主动推送,而不需要每次由客户端想服务器发送请求。通过建立Socket连接,可为通信双方的数据传输提供通道。Socket的主要特点有数据丢失率低,使用简单且易于移植。2服务器与客户端的Socket通信类型Socket的连接类型可以分为两种,分别是面向连接的字节流类型(Sock_stream)和面向无连接数据报类型(Sock_dgram)o流套接字将TCP作为其端对端协议,提供了一个可信赖的

5、字节流服务。数据报套接字使用UDP协议,提供数据打包发送服务。面向无连接数据报类型的Socket工作流程比较简单,双方不需要进行太多的沟通与交互。客户机直接将用户的请求打包发送到服务器端,省略了建立一个固定信息通道的过程。服务器端也是直接将处理的结果发送给客户端。其工作流程如图1所示。面向连接的字节流类型的Socket工作中有比较严格的操作次序,工作的原理也比较复杂。在这种类型的Socket的工作过程中,必须首先启动服务器端,通过调MSocketO函数建立一个Socket对象,然后调用Bind()函数将该Socket对彖和本地网络地址绑定到一起,再调用Listen()函数使该Socket

6、对象处于侦听状态,并规定它的最大请求的数量。其工作流程如图2所示。服务器部分图1无连接Socket操作流程服务器部分图2而向连接Socket操作流程总的來说,无连接和面向连接的通信方式各有长处和短处。在仅仅涉及少量的信息传递的场合可以使用无连接操作;如果涉及大暈信息传递的场合可以采用面向连接操作。3Socket基本实现原理3.1基于面向无连接UDP协议的数据传输服务器端首先创建一个DatagramSocket对象,并且指点监听的端口。接下來创建一个空的DatagramSocket对象用于接收数据(by(eda(a[]=ncwby⑹1024;]DatagramSocket・packet=n

7、ewDatagramSocket(data,data.length)),使用DatagramSocket的receive方法接收客户端发送的数据‘receive()与serversocket的accepet()类似,在没有数据进行接收的处于堵塞状态。客户端也创建个DatagramSocket对彖,并且指点监听的端口。接下來创建一个Inet-Address对象,这个对象类似与一个网络的发送地址(InetAddressserveraddress=InetAd・dress.getByName("17220”)).定义要发送的一个字符串,创建一个DatagramPac・ket对象,并制定要讲这个

8、数据报包发送到网络的那个地址以及端口号,最后使用DatagramSocket的对象的send()发送数据。*(Stringstr=nhelloH;bytedata[]=str.getByte():DatagramPacketpacket=newDatagramPacket(data,data.length,serveraddress,4567);socket.send(packet);)3.2基于面向连接TCP协议的Socket服

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。