版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、收稿日期:2004-02-16作者简介:李顺新(1972,男,湖北潜江人,讲师,硕士,研究方向为软件工程学、计算机图形学和CAD 技术、基于计算机网络的应用技术。数据备份系统中多线程传输和断点续传的设计李顺新,丁胜,陈建勋(武汉科技大学计算机科学与技术学院,湖北武汉430080摘要:分析了客户机/服务器中多线程和断点续传实现文件传输的原理和实现方法,给出了该网络备份软件的设计方案和所用到的关键技术,从而实现了网络中数据的备份和恢复。该备份软件的设计基于多线程和Socket 等,完成了计算机网络系统中多用户并行数据备份与恢复。关键词:多线程;Winsock ;客户机/服务器;断点续传;文件传输中
2、图分类号:TP393.09文献标识码:A 文章编号:1005-3751(200410-0110-04Design of Multi -thread T ransfer and Broken -pointContinuingly -transferring in Data B ackup SystemL I Shun 2xin ,DIN G Sheng ,CHEN Jian 2xun(College of Computer Sci.and Techn.of Wuhan University of Sci.and Techn.,Wuhan 430080,China Abstract :Analys
3、es the principle and realization method of multithread and broken -point continuingly -transferring in client/server.The design scheme and technology are proposed at length.The network backup software is designed based on some key technologies such as multi -thread and Winsock ,consequently ,the dat
4、a backup and restore are realized in network.It is achieved that the data backup and re 2store of computer network system of multi -user.K ey w ords :multi -thread ;winsock ;client/server ;broken -point continuingly -transferring ;file transfer0引言随着计算机信息化程度的提高,人们的工作、生活对于网络的信赖性也越来越强,从而使网络系统及其数据的安全性显得
5、越发重要。企业每天产生的数据越来越多,企业的一切经营活动几乎都以这些数据为基础。如这些数据因没有保护好而遭到破坏的话,企业要承受的损失将十分巨大。象人为误操作、硬件损毁、电脑病毒、断电或是天灾人祸等都会造成网络系统瘫痪、数据丢失。避免这种损失的最佳途径就是为系统进行备份。一个良好的数据备份系统为网络数据安全提供了一个可靠的解决方案。用户在客户机上选择备份文件到文件服务器上,有时会存在多个用户同时将文件备份至服务器,而在服务器端采用多线程技术能实现同时接收多个客户机上的备份文件,每个客户机上的一个备份任务在服务器上对应一个线程。1多线程技术原理1.1进程程序载入内存,并分配资源,称为“一个进程”
6、。进程是一个程序在某个数据集上的一次执行,它由私有虚拟地址空间、代码、数据及其它该进程可见的操作系统资源组成执行程序,一个进程包括一个或多个线程。进程由以下几部分组成:一个私有的地址空间,它是进程可以使用的一组虚拟内存地址空间;程序的相关代码、数据源;系统资源,比如操作系统同步对象等;1.2线程线程是操作系统分配CPU 时间的基本单位,是进程内的一个执行单元,一个线程可以执行应用程序的任何部分,包括当前被其它线程执行的部分。一个进程的所有线程共享虚拟的地址空间、全局变量和该进程的操作系统资源。一个应用程序至少包括一个主线程,还可创建其它线程,当一个应用程序中的线程个数大于1时,该线程就称为多线
7、程1。1.3多线程多线程的含义是将程序任务分成几个并行的任务,实现并发执行。多线程是指CPU 可以分时处理多个任务,而每个任务都像独占处理器一样,其实在只有一个CPU 的情况下,通过采用操作系统把时间分成若干个时间片,然后把一个个时间片分配给每个线程,一个执行了的程序就是一个进程2。客户端与服务器端传输过程可用图1 表示。图1客户机/服务器多线程传输文件模型图2一个线程中客户端/服务器“应答”方式通信模型当有多个客户端同时向服务器传输文件时,服务器端和客户端建立Socket 连接后自动为用户端开辟一个文件传输线程,用以处理相互间的文件传输和接收过程。此时,服务器端同时接受来自多个不同客户机的通
8、信请求和文件接收,彼此互不干涉,服务器端采用多线程机制,从而达到最大限度利用网络带宽,提高网络传输效率3。2断点续传原理不管是客户备份文件到服务器还是从服务器中恢复文件到客户机,都涉及到两台计算机之间文件传输,而断点续传是传输的关键。在客户端发送文件过程中,若一次执行过程未传送完所有文件流的内容,下次执行时不必从头开始传送,只需从上次中断传输的位置起开始重新传输,这就是断点续传的简单描述4。由于客户端传输过程中是采用数据包的形式传输,当客户端中止发送线程时客户端中的数据包可能未完全发送完毕,有可能同一个包传输两次,这是因为传输过程中由于网络通信可能产生丢包的现象,即可能读入部分小于一个数据包缓
9、冲区发送的内容,也即客户端发送的一个数据包,服务器端没有完全接收到,因此客户端续传的起始位置不应从客户端最后一次传输数据包时文件流下一个位置,而是根据服务器端最后一次实际接收到的数据包写入数据流后此时数据流的位置,作为客户端重新传输的新位置。正常传输过程中客户端与服务器端采用应答方式,即服务器端接收到客户端传送的数据包后返回给客户端“接收一个数据包完毕,可以传输下一个数据包”的信息,客户端收到这个确认信息后发送端的文件流指针下移单位数据包长度,在新位置开始进行下一个数据包的传输,因此在客户端没有中止进程时不会产生丢包,只有客户端临时中止传输文件线程时产生丢包,下次续传该文件时重新发送该数据包5
10、。说明:图2中单位数据长度是一个数据包的长度,即8192个字节。3实现的关键技术分析3.1Winsock 实现网络通信工作原理Winsock 支持TCP/IP 传输协议,在通信中一方作为服务器,另一方作为客户机。当服务器和客户机方为建立连接准备好后,服务器首先监听客户机连接请求,当客户机对服务器发出连接请求并且服务器接到客户机的请求并建立连接后,服务器和客户机开始进行通信。Socket 是网络上运行的两个程序间双向通信连接的一端。Socket 通信在Windows 中是排队的形式,由操作系统处理,而且接收方和发送方相互协同工作,否则就会造成数据丢失。在Socket 编程中,每次发送和接收一个包
11、,以保证数据传输的安全性和稳定性,同时也不至于过多地占用系统资源。客户程序可以向Socket 写请求,服务器111第10期李顺新等:数据备份系统中多线程传输和断点续传的设计将处理此请求,然后通过Socket 把结果返回给客户。3.2客户机/服务器模型的Winsock 实现过程在客户机/服务器模型中,客户应用程序向服务器程序请求服务。这种方式隐含了在建立客户机/服务器间通讯时的非对称性,即客户应用程序向服务器请求服务,服务程序在指定的端口监听。客户机/服务器模型工作时要求有一套为客户机和服务器所共识的惯例来保证服务能够被提供(或被接受。这一套惯例包含了一套协议。它必须在通讯的双方都被实现。当服务
12、被提供时通信过程中必然存在“客户进程”和“服务进程”。客户机/服务器模式在操作过程中采取的是主动请求方式:首先服务器方要启动,并根据请求提供相应服务;服务器开始监听后,让它一直处于一个等待状态。客户端产生一个连接线程后,服务器开始连接线程,此时就产生一个一对一的线程。(1服务方:打开一通信端口并告知本地主机,一个服务程序通常在一个众所周知的地址监听对服务的请求并接受客户请求。等待客户请求到达该端口。接收到重复服务请求,处理该请求并发送应答信号。接收并发服务请求,要激活一新进程来处理这个客户请求。新进程处理此客户请求,并不需要对其它请求做出应答。服务完成后,关闭此新进程与客户的通信链路,并终止。
13、返回第二步,等待另外的客户请求。关闭服务器。(2客户方:打开一通信通道,并连接到服务器所在主机的特定端口。向服务器发出服务请求报文,等待并接收应答;继续提出请求。 请求结束后关闭通信通道并终止。从上面的描述过程可知,服务进程一般是先于客户请求启动的。服务进程一直处于休眠状态,直到一个客户对这个服务的地址端口提出了连接请求。在这个时刻,服务程序被“惊醒”并且为户提供服务对客户的请求作出适当的反应。这一请求相应的过程可以用图3表示。只要系统运行,该进程一直存在,直到正常终止或者强迫终止。Delphi 集成开发环境中提供了一些网络组件,其中的Socket 组件类主要包括ClientSocket 和S
14、erverSocket 控件,ClentSocket 控件实现了客户应用程序的Socket 的功能,图3客户机/服务器S ocket 通讯工作模式框图ServerSocket 控件实现了服务应用程序的Socket 的功能。这两个控件为套接字的直接使用提供了优秀的界面,实现了一些基层协议。文中使用了ServerSocket 控件,下面给出了ServerSocket 控件的主要属性及方法。(1Socket 属性。代表了服务器端监听状态的Socket对象。(2Server Type 属性。用于确定服务器Socket 连接的两种工作方式:阻塞方式(st ThreadBlocking 和非阻塞方式(st
15、NonBlocking 。在使用阻塞方式时,ServerSocket 控件会自动为每一个新的Socket 连接产生一个新的线程。在该线程处于读写状态的时候会被悬挂起来,直到所有的消息都被传送完毕。在使用非阻塞方式的时候,使用异步方式处理所有的读写操作。由于服务器端同时相对多个客户端的传输数据的请求,因此应配置成阻塞方式。(1Delphi 中的客户端创建线程(Thread 方法。TThread 是一个能够在应用程序中创建互不相干的执行线程的类。每一个TThread 对象的子类过程就是一个新的执行线程。从TThread 类派生出的多个过程就可以使Delphi 的应用程序完成多个线程的工作。要在应用
16、程序中使用线程,必须从TThread 中派生出一个新类,然后重载其相关的方法。当一个应用程序运行时,程序就会将线程装载到内存中并予执行,由此,程序运行就变成了包含一个或几个,甚至更多线程的过程,这些线程包含了运行这个程序的数据、代码和其它系统资源。Delphi 中多线程的实现可以直接用线程类TThread 来完成工作。211微机发展第14卷TThread是一个abstract(抽象类,它具有类的基本特性继承性。TThread作为基类,用继承的形式来生成子类。以下为客户端发送文件线程算法:开始:申请开辟内存空间(大小为一个缓冲区容量,即8192个字节从文件流当前指针读入8192个字节的数据到缓冲
17、区,文件流指针下移8192个单位通过Twinsocketstream发送缓冲区中的内容到服务端直到文件流指针指向文件流尾部释放内存空间发送结束(2Serversocket端多线程的实现。对于服务器端Socket来说,如果把Server Type设置为st ThreadBlocking,表示采取阻塞方式进行连接,Delphi 中将为每一个阻塞方式的连接自动分配一个新的线程,这样即使一个客户正在进行读写操作,其它的客户也不必等待。服务器端处理线程算法如下:开始:等待客户端在规定的时间内传来的数据申请开辟内存空间(大小为一个缓冲区容量,即8192个字节将接收到数据内容放入临时缓冲区中将缓冲区的内容写
18、入文件流中,且文件流指针下移8192个单位。此时文件流位置保存至该用户日志表“位置”字段。发送“接收到数据包”信息直到文件流指针指向文件大小的位置释放内存空间接收结束若发送文件线程中止时,客户端传送的数据包可能在服务端未接收到。下次对该文件续传时,先通过服务端取得该用户对该文件传输时产生的日志表(表结构见表1的“位置”字段和“文件大小”字段(即待发送文件长度,客户端对该文件传输时以“位置”字段的大小作为此时该文件传输的起始位置,循环发送数据包,直到文件流指针的位置为“文件大小”字段,表示客户端发送该文件结束。当然,其间仍可能线程中止,处理过程同上次断点一样,记录下服务端接收到文件流指针的位置,
19、存入日志表相关字段。其中,客户端用户备份日志表,用以记录服务端接收文件时记录文件的有关信息。表1用户备份日志表用户名客户端IP地址发送时间文件名(含路径位置文件大小结束时间4结束语在数据备份系统中,多个客户可以通过Socket同时传输数据到服务器中,服务器端通过多线程技术能同时接收处理多个来自不同计算机的数据,从而更加高效快速地实现了数据备份与恢复。文中通过多线程和断点续传原理和实现方法的分析,较好地解决了数据备份系统中的多用户传输文件的问题。参考文献1谈音.DEL PHI多线程机制剖析及其应用J.电脑与信息技术,2002,(4:27-29.2郑琪,方思行.通用多线程服务器的设计和实现J.计算机工程与应用,2003,(16:146-148.3周志华,陈刚,董金祥.基于WEB的跨平台分布式多线程文件服务器的设计J.计算机工程,2003,(4:41-43.4劳家庆,叶飞越.多线程技术对批量数据处理的优化J.微型机与应用,2001,(4:11-12.5陈增强,郭嘉琳.具有断点续传功能的文件传输系统的设计与关键技术J.计算机工
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 结合车活动策划方案(3篇)
- 气柜拆除施工方案(3篇)
- 蒸汽砖施工方案(3篇)
- 北京暖气施工方案(3篇)
- 肇源打井施工方案(3篇)
- 垂钓中心施工方案(3篇)
- 2025年企业企业信息化建设与运维实施手册
- 礼服品牌合作方案
- 2025年大学大三(眼视光医学)角膜病学阶段测试试题及答案
- 2025年中职计算机信息管理(信息管理应用)试题及答案
- 采购部门年度采购计划及预算安排
- 2025年初中美术教师招聘考试试题及参考答案
- 超声波检测二级试题库UT含答案完整版2025
- 高压值班安全培训内容课件
- 网络信息安全运维管理手册
- 智慧方案智慧生活垃圾焚烧发电厂解决方案
- 呛奶窒息培训课件
- 《寻找时传祥》课件
- 安全质量组织机构及各岗位职责
- 2025年度商铺装修工程总包与施工合同
- 弘历指标源码6个(仅提供源码)
评论
0/150
提交评论