首页 客户端与服务器端的Socket通信

客户端与服务器端的Socket通信

举报
开通vip

客户端与服务器端的Socket通信 本栏目责任编辑:冯蕾网络通讯及安全 Computer Knowledge and Technology 电脑知识与技术 第 5 卷第 4 期 (2009 年 2 月) 客户端与服务器端的 Socket通信 夏玲,王伟平 (中南大学 信息科学与工程学院,湖南 长沙 410083) 摘要:介绍有关网络客户服务模型的 socket 通信应用,采用 delphi 中对 Windows API 进行了完美封装的套接字组件,设计了一个实 现面向连接的通信方式的实际例子,说明两者是如何进行通信。 关键词:socket;...

客户端与服务器端的Socket通信
本栏目责任编辑:冯蕾网络通讯及安全 Computer Knowledge and Technology 电脑知识与技术 第 5 卷第 4 期 (2009 年 2 月) 客户端与服务器端的 Socket通信 夏玲,王伟平 (中南大学 信息科学与工程学院,湖南 长沙 410083) 摘要:介绍有关网络客户服务模型的 socket 通信应用,采用 delphi 中对 Windows API 进行了完美封装的套接字组件,设计了一个实 现面向连接的通信方式的实际例子,说明两者是如何进行通信。 关键词:socket;delphi;通信;客户端;服务器端 中图分类号:TP393 文献标识码:A1 文章编号:1009-3044(2009)04-812-02 The Socket Communication about Client and Server XIA Ling, WANG Wei-ping (School of Information Science and Engineering, Central South University, Changsha 410083,China) Abstract: Customer service on the network model of the socket communications applications, using the Windows API delphi in the per- fect package for the socket components, a design-oriented means of communication linking the actual example, to explain how they are communicating. Key words: socket; delphi; communication; client; server 1 引言 大部分网络协议的实现都由客户端(Client)和服务器端(Server)来协作完成。 这种模型本质上涉及两个不同的程序,通常这两个 程序在不同机器上运行。 这些机器之间都有网络连接。 服务器端程序提供服务并对来自客户程序的请求作成响应。 而客户端程序 则是在使用者和服务器端程序之间建立某种沟通的渠道,或者是作为使用服务器端提供的某种网络服务的工具。 一个典型的服务器与客户机之间的交互可能如下所示: 1) 客户机提出一个请求; 2) 服务器收到客户机的请求,进行分析处理; 3) 服务器将运行处理的结果返回给客户机。 通常一个服务器需要向多个客户机提供服务。因此对服务器来说,还需要考虑如 何有效地处理多个客户的请求。 2 服务器与客户端的 Socket 通信类型 Socket 的连接类型可以分为两种,分别是面向连接的字节流类型(Sock_stream)和 面向无连接数据报类型(Sock_dgram)。 面向无连接数据报类型的 Socket 工作流程比较简单,双方不需要进行太多的沟 通与交互。客户机直接将用户的请求打包发送到服务器端,省略了建立一个固定信息 通道的过程。服务器端也是直接将处理的结果发送给客户端。每个发送的数据报都携 带有传递所需要的所有地址信息。 其工作流程如图 1 所示。 面向连接的字节流类型的 Socket 工作中有比较严格的操作次序, 工作的原理也 比较复杂。 在这种类型的 Socket 的工作过程中, 必须首先启动服务器端, 通过调用 socket()函数建立一个 Socket 对象,然后调用 Bind()函数将该 Socket 对象和本地网络 地址绑定到一起。再调用 Listen()函数使该 Socket对象处于侦听状态,并规定它的最大 请求的数量。 其工作流程如图 2所示。 总的来说,无连接和面向连接的通信方式各有长处和短处。在仅仅涉及少量的信 息传递的场合可以使用无连接操作; 如果涉及大量信息传递的场合可以采用面向连 接操作。 3 Delphi 的 Socket 组件 3.1 Delphi 中 Socket 的操作方式 根据连接发起的方式以及本地 Socket 要连接的目标,Socket 之间的连接可以分 为:客户端连接、监听连接以及服务器端连接。 Delphi 分别使用 ClientSocket 组件 和 ServerSocket 组件 来操纵客户端 Socket 和服务器端 Socket 的连接和通信。 ClientSocket 组件为客户端组件。 它是通信 的请求方,也就是说,它是主动地与服务器端建立连接。 ServerSocket 组件为服务器端 组件。 它是通信的响应方,也就是说,它的动作是监听以及被动接受客户端的连接请 求,并对请求进行回复。 ServerSocket 组件可以同时接受一个或多个 ClientSocket 组件 收稿日期:2008-12-24 图 1 无连接 Socket 操作流程 图 2 面向连接 Socket 操作流程 ISSN 1009-3044 Computer Knowledge and Technology 电脑知识与技术 Vol.5,No.4,February 2009, pp.812-813 E-mail: info@cccc.net.cn http://www.dnzs.net.cn Tel:+86-551-5690963 5690964 812 网络通讯及安全本栏目责任编辑:冯蕾 的连接请求,并与每个 ClientSocket 组件建立单独的连接,进行单独的通信。 3.2 ServerSocket 的属性设置 ·Port 是通信的端口,必须设置。 在本文实例中设置为 95; ·ServerType 服务器端读写信息类型,设置为 stThreadBlocking 表示异步读写信息,本文实例中采用这种方式。 ·ThreadCacheSize,客户端的最大连接数,就是服务器端最多允许多少客户端同时连接。 本文实例采用默认值 10。 3.3 ClientSocket 的属性 ·Port,是通信的端口,必须与服务器端的设置相同。 否则可能导致两个组件发送的目标端口和接收的端口不一致,无法建立有 效的信息传送连接。 ·ClientType,客户端读写信息类型,应该与服务器端的设置相同,为 ctNonBlocking 表示异步读写信息. ·Host,客户端要连接的服务器的 ip 地址。 必须设置,当然也可以在代码中动态设置。 4 应用实例 4.1 设计思路 实例包括一个服务器端程序与一个客户端程序。 客户端程序可以放到多个计算机上运行,同时与服务器端进行连接通信。 服务器程序实现以下基本功能:1) 在用户登录的时候记录用户登录所在主机的 IP、 主机名称等;2) 显示当前在线用户数量;3) 可对当前在线用户执行注销、重启、关机等操作。 客户端程序实现一些基本功能:1) 显示当前程序的工作状况;2) 实现服务器端发送的注销、重启、关机的操作。 4.2 程序说明 根据功能的实际需要,服务端程序一运行,窗体的 StringGrid 控件就显示已在线用户的基本信息。 代码如下: procedure TfrmServer.displayconnectionsinfo ; //在 stringgrid 中显示在线用户数据 Var i: integer; begin listbox1.Items.Clear; with ServerSocket1 do begin if (length(arrayconnectionstatus)>=1) then stringgrid1.RowCount:=length(arrayconnectionstatus)+1 else stringgrid1.RowCount:=2; with stringgrid1 do begin for i:= 0 to high(arrayconnectionstatus) do begin with arrayconnectionstatus[i] do begin cells[0,i+1]:=inttostr(tcsactiveconnections); cells[1,i+1]:=' '+tcsremotehost; cells[2,i+1]:=' '+tcsremoteaddress; cells[3,i+1]:=' '+inttostr(tcsremoteport); cells[4,i+1]:=' '+tcslocalhost; cells[5,i+1]:=' '+tcslocaladdress; cells[6,i+1]:=' '+inttostr(tcslocalport);listbox1.items.Add(tcsremotehost);end;end;end;end; end; 在窗体上,“执行”按钮的 Click 事件负责向指定的在线用户或全体在线用户发送注销、重启、关机操作指令。 客户端程序通过通信端口接收指令,并做出响应,弹出关机提示对话框,如需要继续使用计算机的在线用户,可点击“取消”按钮。 5 结束语 综上所述,Socket 组件相比其它高级协议组件如 FastNet 组件,它的封装层次较低,程序员可以在它们的基础上自己定义新的高 级协议或者是规定自己的信息交互流程。 利用以上代码,进一步拓展的余地也很大,还可以加入一些更细化的功能,如局域网在线 聊天、点对点传输文件等。 参考文献: [1] 赵秀英.Delphi 网络高级编程[M].北京:人民邮电出版社?,2001.83-85. [2] 申普兵,行明顺,王兆祥,等.计算机网络与通信[M].北京:人民邮电出版社,2006.9-11. [3] 王丰锦,邵新宇.基于 SOCKET 和多线程的应用程序间通信技术 的研究[J].计算机应用,2000,20(6):65-67. [4] 谢希仁.计算机网络[M].第 4版.北京:电子工业出版社,2003.100- 113. [5] 计世网 .统一通信的五大技术热点 [EB/OL]. http://tech.c114.net/ 166/a275630.html. [6] 谢安明 ,邵美珍 .使用 Socket 设计网络通讯程序 [EB/OL]. http:// www.cnki.com.cn/Article/CJFD2001-XXGC200101019.htm. [7] 曹伟.基于网络的远程控制系统[D].长春:吉林大学,2005. 夏玲(1982-),女,江西吉安市人,福建南平铝 业有限公司工程师,中南大学信息科学与工程 学院计算机科学与技术专业工程硕士在读生, 研究方向:计算机网络信息安全与通信技术。 王伟平(1969-),女,中南大学信息科学与工程学院教授,研 究方向:网络与信息安全、匿名通信技术和网络管理。 813
本文档为【客户端与服务器端的Socket通信】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_753046
暂无简介~
格式:pdf
大小:183KB
软件:PDF阅读器
页数:2
分类:互联网
上传时间:2011-05-25
浏览量:46