



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2基于 Linux 的 TCP 通信服务器端的实现2.1 设计要求大家好,今天 ,与教研室老师商量了一下题目,觉得你们组的这个题目有点难度, 而且时间比较短,用 LINUX 可能会比麻烦,一是它使用的vi 命令比较复杂, 另外编译环境的安装也比较麻烦费时,而我们每个老师要带4 个组没有太多时间,这周我们又要内审检查考试卷子,所以现在更改一下设计内容,不要求在Linux下做了,可以在windows环境下来做,多线程服务器端,用C+ 语言或JAVA语言。这样都做好了,如果有时间再熟悉一下Linux环境,等以后毕业设计的时候再实现Linux下的服务器。不知道你们的想法如何?也不知道你们以前是否有熟悉
2、Linux 的?如有什么问题请随时跟我联系。设计目的在 linux 环境下 ,掌握 TCP 通信的服务器端实现方式。基本功能要求和设计目标( 1)能够侦听客户端的连接请求;( 2)建立独立的数据通信链路;( 3)在通信两端建立对等的通信协议;( 4)完成数据包的收发与存储;扩展功能实现视频监控数据的采集以及控制命令的收发。2.2 参考示例案例说明( 1) TCP 三次握手机制为实现服务器端的TCP 通信功能,服务器端需要能够接受多个客户端的通信请求,并建立多条 TCP 通信链路。 TCP的连接建立叫做三次握手。客户端发送一个带 SYN 标志的 TCP 报文到服务器。这是三次握手过程中的报文 1
3、。服务器端回应客户端的,这是三次握手中的第2 个报文,这个报文同时带 ACK 标志和 SYN 标志。因此它表示对刚才客户端 SYN 报文的回应;同时又标志 SYN 给客户端,询问客户端是否准备好进行数据通讯。客户必须再次回应服务段一个 ACK 报文,这是报文段 3,如图 1。数据传输是在连接建立后,双向的数据传送就可以开始。客户和服务器都可以在两个方向传送数据和确认。图 1 TCP 协议建立连接三次握手过程( 2)套接字( Sockets)的概念Windows 下网络编程的规范 Windows Sockets 是 Windows 下得到广泛应用的、开放的、支持多种协议的网络编程接口。Socke
4、t 又称套接字,是进程之间通信的抽象连接点。可以通过一个形象的例子来理解这个概念, 现实生活中的电话是人们联系的常用工具,双方只要使用两部电话机就可以交谈。在计算机世界中,两个程序就是使用Socket 进行通信的,一个 Socket就好比一部电话机,两个程序在网络上通过一个双向链路进行通信,这个双向链路的每一端就成为一个 Socket 。进程之间要通信,首先要建立各自的Socket ,就像要打电话一定要先有电话机一样,打电话时每部电话机都可以说和听。与此类似,每个 Socket 也都可以进行读写操作,读写操作时分别要用到 Socket中的输入流和输出流。建立连接后, 客户程序可以向 Socke
5、t里写入请求,然后服务器会处理这个请求,并把处理结果通过 Socket送回。服务器应用程序一般监听一个特定端口以等待一个客户的连接请求, 当一个连接请求到达时, 客户和服务器建立一个通信连接。在连接过程中, 客户被分配一个本地端口号并且与一个 Socket 连接,客户通过写 Socket 来通知服务器, 通过读 Socket 来获取信息。 类似地,服务器也获取一个本地端口号, 它需要一个新的端口号来监听原始端口上的其它连接请求。 服务器也给它的本地端口连接一个 Socket ,读写来自客户的请求。 根据网络通信的特征,套接字可分为两类:流套接字和数据报套接字。流套接字流套接字提供双向的、 有序
6、的、无重复并且无记录边界的数据流服务, 它适用于处理大量数据。网络传输层可以将数据分散和集中到合适尺寸的数据包中。流套接字是面向连接的,通信双方进行数据交换之前,必须建立一条路径,这样既确定了它们之间存在的路由,又保证了双方都是活动的、可彼此响应的,但通信双方之间建立一个通信信道需要很多开支。除此以外,大部分面向连接的协议为保证发送无误, 可能会需要执行额外的计算机来验证正确性,因此会进一步增加开支。数据报套接字数据报套接字支持双向的数据流, 但并不保证数据传输的可靠性、 有序性的和无重复性。也就是说,一个从数据报套接字接收信息的进程有可能发现信息重复,或者和发出时的顺序不同的情况。 此外,数
7、据报套接字的一个重要特点是它保留了记录边界。对于这一特点,数据报套接口采用了与现在许多包交换网络 (例如以太网)非常类似的模型。数据报套接字是无连接的, 它不保证接收端是否正在侦听, 类似于邮政服务:发信人把信装入邮箱即可, 至于收件人是否能收到这封信或邮局是否能按时将信件投递到收件人处等,发件人都不得而知。因此,数据报并不可靠,需有程序员负责管理数据报的排序和可靠性。应用程序一般仅在同一类的套接口间通信。不过只要底层的通信协议允许,不同类型的套接口也照样可以通信。本设计采用面向连接的TCP 协议,所以使用流套接字。( 3)客户机 /服务器模型TCP/IP 协议应用的主要工作模式是客户机/服务
8、器模式 (Client/Server,简称C/S 模式)。在两个不同进程的通信过程中,一方发出服务请求,一方提供服务,通常称它们为“客户进程”和“服务进程” 。显然,两个进程之间的通信实际上是基于通信协议的进程的同步过程, 服务进程作为自愿的提供者, 为众多主机上的客户进程提供服务。 服务进程要先于客户进程开启, 在某一确定的网络地址( IP 地址 +端口号)等待客户进程的请求, 如有请求到达, 服务进程采取某种方式 (并发服务或者重复服务),直到客户进程关闭,然后服务进程继续等待下一个请求服务的进程。服务器通常采用并发服务的方式。所谓并发服务,就是服务进程在有客户请求到来时,激活新的进程来专
9、门为此客户请求提供服务, 并在客户终止请求后杀死该进程,与此同时,原先的进程可以继续在原来的端口等待下一个客户的连接。 Socket 编程接口为新的请求创建一个专门的“数据套接字” ,并发服务器根据该套接字创建专门的服务进程。 并发服务的最大优点是能及时相应请求, 虽然创建新进程会增加系统开销。与此相对应的是重复服务,它利用“数据套接字” ,在监听的进程上直接进行服务。 需要说明的是,两种类型的 Socket(SOCK_STREAM和 SOCK_DGRAM) 的工作流程是不同的,分别如图2 和图 3 所示。服务器创建流失套接字 S将 S 和本地地址和端口绑定客户机监听,等待连接请求创建流套接字
10、 cs接受客户连接, 创建数据利用 cs 和远程服务器建立建立连接套接字 ns连接利用 ns 和客户进程通利用 cs 和服务器进程通信,提供服务(是否激活信,完成数据传输请求 /应答新进程依靠服务器类型而定)关闭 ns,若是并打服务,关闭套接字 cs,结束 TCP会话还需要退出该进程关闭套接字S,停止服务图 2 流套接字服务的工作流程示意图服务器客户机创建数据报套接字S创建流套接字cs将 S 和本地地址和端口绑定利用 cs和远程服务器建立连接相应客户请求,完成数据利用 cs 和服务器进程通传输信,完成数据传输关闭套接字S,停止服务关闭套接字cs,结束 UDP 会话图 3 数据报套接字服务的工作
11、流程示意图网络结构设计( 1)网络拓扑结构采用星型连接。激光打印机PC clientPC clientServerPC clientPC Client( 2)使用 10/100Mbps 的网卡。( 3)软件实现编程语言采用 C 语言,利用 socket 进行通信。( 4)开发平台 linux 。由于 linux 能够提供强大的网络支持,以及安全特性,当前主流服务器端都采用 linux 平台构筑。软件设计设计流程图 :开始创建侦听 Socket端口 2000N侦听有客户端连机Y建立数据通信通道N数据通信通信结束Y通信连路拆线结束图 4 软件流程图( 1)建立一个用于侦听的 socket,始终在端口 2000 进行侦听。( 2)当有客户端发出链路请求,侦听链路接受,并且建立数据链路,在独立的线程进行数据通信。( 3)拆分通信数据包, 数据包最大长度为 1KB ,在每个数据包包头的 1 个字节,用于描述数据包的序号,循环计数。也就是说,包头的第一个数据依次为0,1,2.255,超过 255 后,从 0 开始重新计数。( 4)接收的的数据,写入文件,每个文件最大长度上限为1MB 。参考程序清单测试方法1.使用客户端与服务器端进行联机,确认收发数据正确;2.在服务器端 ,使用 TCPDUMP 截获数据进行分析,确保数据正确。思考与提高TCP 通信是提供
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 八大浪费考试试题及答案
- 组织行为与变革管理案例分析试题及答案
- 2025年绿色建材研发中心项目绿色建材市场前景与投资建议报告
- 2025年环保行业环保设备与材料创新应用报告
- 2025年社区心理健康服务社区心理健康服务社区发展模式报告
- 2025至2030年中国3D网上购物行业市场全景调研及投资规划建议报告
- 解析卷-北师大版8年级数学上册期末试卷及答案详解(各地真题)
- 基础强化人教版8年级数学下册《平行四边形》定向攻克试题(含解析)
- 2025财税管理咨询合同范本大全专业服务保障
- 2025版幼儿园外籍教师聘用及教育服务合同
- 如果历史是一群喵
- SJG 110-2022 附建式变电站设计防火标准
- 《园艺学专业英语》全套教学课件
- 2024年白酒酿造职业技能等级认定(初级工)理论考试复习题库(含答案)
- 自助餐食品安全培训
- 循证护理实践案例比赛课件
- 输液泵、微量泵技术操作规程及评分标准
- 社区护理学课程说课
- 成都市第三十八中学校初一新生分班(摸底)语文考试模拟试卷(10套试卷带答案解析)
- 筛网目数-孔径对照表
- 现代科学技术概论课件
评论
0/150
提交评论