加速上传与下载文件的方法及其系统的制作方法

文档序号:7696175阅读:106来源:国知局

专利名称::加速上传与下载文件的方法及其系统的制作方法
技术领域
:本发明总体涉及通信领域,更具体地,涉及计算机通信领域。
背景技术
:对采用客户机/服务器体系结构的文件管理系统来说,服务器用来集中存储、管理文件,客户机通过与服务器通讯,实现文件的上传和下载。确保文件准确、快速的上传、下载是这类系统中比较关键的技术。在目前所采用的传输技术中直接使用WINDOWS等操作系统或开发软件提供的文件传输函数进行文件传输其优点是使用方便,开发工作量小;而缺点则是,可控性差,优化的余地小,且网络中断后需要重新传输。使用FTP协议进行文件传输优点是技术成熟,稳定;缺点是要求服务器实现为FTP服务器,无法很好地与其它应用进行集成。直接使用Socket套接字进行文件传输优点是灵活方便,能很好的实现开发者的意图;缺点是编程工作量大,优化难度高。普通的使用Socket套接字进行文件传输,没有经过优化处理。一次网络中断就会造成传输失败,需要从头重新开始传输。服务端接收到客户端请求后,对文件进行读或写操作,待完成后,给客户端返回消息,一次通讯完成。因此,服务端的服务器在客户端的客户机请求的时候,才去读取文件,在文件的传输过程中,有大量的空余时间闲置;并且,服务器接收到客户机的上传数据,写入文件后才返回,从而造成客户机等待。使用多线程技术进行文件传输,是将文件分块,多个线程各自负责一些文件块,进行并发下载或上传。因为文件传输的主要瓶颈在于网络,多线程下载提高了网络带宽的利用率,进而提高了文件的传输速度。因为多线程传输需要服务器方的支持,目前应用在Ftp、Http等服务器的文件下载上,且对上传不支持。
发明内容本发明所要解决的技术问题是1.对使用Socket套接字进行文件传输的方式进行优化,在服务端使用緩存技术,以减少在传输过程中的服务器和客户机对文件读写的等待;2.在服务(器)端支持客户机使用多线程技术对文件进行下载甚或上传;3.防止因传输过程的一些网络异常所造成的传输失败。一种加速上传与下载文件的方法,其特征在于,在一个或多个客户端的客户机中采用多线程技术、容错技术;以及在服务端的服务器中采用缓存存取技术。根据本发明方法的一个方面,进一步包括步骤当所述一个或多个客户机与所述服务器连通后则在每一个所述客户机处均对将要传输的文件进行分块然后都各自同时启动多个线程并发上传或下载这个或这些数据块,其中,在所述下载中每一个所述客户机均是通过所述服务器来获知各自文件的大小的。根据本发明方法的进一步方面,还包括步骤使得当所述服务器收到从特定的客户机处所上传文件的数据块后就先将所述数据块放置到所述服务器的数据緩存中,并立即应答所述特定客户机,从而完成该客户机的一次通信并准备进行下一次数据传输。根据本发明方法的再一个方面,进一步包括步骤使得所述服务器在所述文件的其他部分数据开始被上传时就通知一个特定的线程来将所述緩存中的数据进一步写入到所述服务器的永久存储器之中。根据本发明方法的再进一步方面,还包括步骤使得所述服务器在每一个所述文件开始被下载时都先根据每一个所述客户机的线程数来建立数据緩存及准备好大于线程数的数据块,以等待传输;以及使得所述服务器在接收到每一个所述客户机的数据请求时都从所述緩存中直接获取数据并将其发送到对应的所述客户机,从而完成各自的一次通信。根据本发明方法的另进一步方面,进一步包括步骤使得所述服务器在每一个所述文件的一部分开始被下载从而使其对应的所述緩存中的数据块各自减少到一个特定阈值时均通知各自一个特定的线程来从所述服务器的永久存储器中读取对应的所述文件的其他部分数据并维持在所述緩存之中。根据本发明方法的再一个方面,其特征在于每一个所述阈值均为不小于每一个所述客户机所对应的线程数的整数。根据本发明方法的再另一个方面,其中,所述容错技术进一步包括按时间和次数进行重试。一种加速上传与下载文件的系统,其特征在于包括一个或多个位于客户端的、采用上述任一方面的步骤方法的多线程技术及容错技术的客户机;以及位于服务端的、采用上述任一方面的步骤方法的所述的緩存存取技术的服务器。根据本发明系统的一个方面,其特征在于,所述容错技术进一步包括按时间和次数进行重试。上述方法/系统相比于此前所采用的现有技术,在相同条件下,更大地提高了文件的传输速度和文件传输的成功比例,从而提高了文件的传输效率。图1示出了根据本发明方法的上传过程的流程图图2示出了根据本发明方法的上传系统的示意图图3示出了根据本发明方法的下载过程的流程图图4示出了根据本发明方法的下载系统的示意图。以及具体实施方式实现本发明的上传过程方法如图1所示。文件上传的具体步骤如下1)客户机发起连接,将待上传的文件大小、使用的线程数、文件分块的大小等信息通知服务器;2)服务器在收到客户机的文件上传请求后,针对该次请求,建立专门的临时文件,数据緩存,并启动(或称创建)对应的写緩存线程,而完成后,应答客户机请求;3)客户机在收到服务器响应后,开始启动多线程,对文件进行分块传输;4)客户机的某个线程将数据块传输给服务器;5)服务器在收到客户机某个线程上传的数据块后,将数据块放置到该次上传对应的数据緩存中,通知对应的写緩存线程有数据可以写入,而完成后,应答客户机;6)服务器对应的写緩存线程根据写数据通知,读取对应的数据緩存,写入永久存储器中;7)客户机对应的线程在收到服务器的应答后,开始下一个数据块的传输;8)当整个文件传输完毕时,客户机通知服务器,传输完毕;9)服务器在收到客户机的文件传输完毕通知时,将该次上传对应的可能尚未完全写入的緩存写入永久存储器中,删除对应的临时文件,终止对应的写緩存线程,而完成后,应答客户机。文件上传系统的原理图如图2所示,其中1)客户端采用多线程技术对要传输的文件进行分块,同时启动多个线程进行并发上传。2)服务端采用緩存存入技术7服务端中的服务器在接收到客户端的客户机上传的数据块后,放置到数据缓存中,立即应答客户机,以完成一次通讯,从而使客户机可以接着进行数据传输;该服务器在一个文件的另一部分开始上传时,就通知一个专I',的线程来读取数据缓存中所放置的该文件那一部分的数据块,以将其写入进该服务器的永久存储器之中。因为在服务机处釆用了緩存存入技术,客户机上传文件数据块成功后,立即返回,不需要等待服务器的写入文件操作,故提高了传输效率。文件上传结果对比(同时并发上传相同大小的十个文件)如下表1所示<table>tableseeoriginaldocumentpage8</column></row><table>表l一方面,实现本发明的下载过程的方法如图3所示。文件下载的具体步骤如下1)客户机发起连接,将待下载的文件名称、使用的线程数、数据块的大小通知服务器;2)服务器在收到客户机的下载请求后,针对该次下载请求,建立专门的数据緩存,读取文件,在緩存中准备好大于线程数的数据块,并相应的启动(或称创建)一个读文件线程,用来维护该数据緩存,而完成后,应答客户机,并将文件的大小返回给客户机;3)客户机在收到服务器的响应后,根据该文件大小建立其对应的文件,启动多个线程开始对服务端的文件分块下载;4)客户机的某个线程向服务器请求数据块;5)服务器在收到客户机的某个线程的数据请求后,从该次下载对应的数据緩存中获取数据块,并检查数据块个数是否到达特定阔值,如果到达这一特定阈值,则通知对应的读文件线程,然后将数据块返回给客户机;6)该次下载对应的读文件线程在收到读数据通知后,读取文件,写入该次下载对应的数据緩存中,在文件未读取完毕前,保证数据緩存中的数据块个数不小于客户机的下载线程数;7)客户机的对应线程收到数据块后,写入文件,并开始请求下一个数据块;8)客户机下载完文件后,通知服务器,文件下载完成;9)服务器在收到客户机文件下载完成通知后,终止该次下载对应的读文件线程,删除该次下载对应的数据緩存,而完成后,应答客户机。文件下载系统的原理图如图4所示,其中1)客户端采用多线程技术客户端的客户机从服务端的服务器获取文件大小,对要传输的文件进行分块,同时启动多个线程进行并发下载。2)服务端采用緩存读取技术服务端的服务器在开始下载文件时,根据客户端的客户机的线程数来建立一个数据緩存,准备好大于线程数的数据块以等待传输;服务器在接收到客户机的数据请求时,从緩存中直接获取数据返回给客户才几,从而完成一次通讯;该服务器在开始被下载文件时,启动一个专门的线程,读取数据到緩存并进行维护,以在文件未成功被下载前确保緩存中的可用数据块数。文件下载结果对比(同时并发下载相同大小的十个文件)如下表2所示<table>tableseeoriginaldocumentpage10</column></row><table>表2另外,在上传和下载的通讯中,客户端的客户机处均采用按时间和次数进行重试的容错技术,以确保文件不会因为偶然的网络中断或异常造成整个文件传输失败。值得注意的是,在具体实施中,本发明所述的这种客户机/服务器体系结构其中的客户机可以是一个或多个的,且客户机和服务器的角色也可以根据需要而进行互换的。本发明可由包括但不限于Visua1C等计算机编程语言软件来实现,亦可用例如模块电路等硬件线路来实施。在权利要求中未被明确书面陈述的限制、要素、特性、特征、优势或属性,都不应以任何方式限定这样的权利要求范围。进而,本说明书及其附图应以图示的而不是限定性的含义而被看待。权利要求1.一种加速上传与下载文件的方法,其特征在于,在一个或多个客户端的客户机中采用多线程技术、容错技术;以及在服务端的服务器中采用缓存存取技术。2.根据权利要求1所述的方法,进一步包括步骤当所述一个或多个客户机与所述服务器连通后则在每一个所述客户机处均对将要传输的文件进行分块然后都各自同时启动多个线程并发上传或下载这个或这些数据块,其中,在所述下载中每一个所述客户机均是通过所述服务器来获知各自文件的大小的。3.根据权利要求2所述的方法,还包括步骤使得当所述服务器收到从特定的客户机处所上传文件的数据块后就先将所述数据块放置到所述服务器的数据緩存中,且立即应答所述特定客户机,从而完成该客户机的一次通信并准备进行下一次数据传输。4.根据权利要求3所述的方法,进一步包括步骤使得所述服务器在所述文件的其他部分数据开始被上传时就通知一个特定的线程来将所述緩存中的数据进一步写入到所述服务器的永久存储器之中。5.根据权利要求2所述的方法,还包括步骤使得所述服务器在每一个所述文件开始被下载时都先根据每一个所述客户机的线程数来建立数据緩存及准备好大于线程数的数据块,以等待传输;以及使得所述服务器在接收到每一个所述客户机的数据请求时都从所述緩存中直接获取数据并将其发送到对应的所述客户机,乂人而完成各自的一次通信。6.根据权利要求5所述的方法,进一步包括步骤使得所述服务器在每一个所述文件的一部分开始被下载从而使其对应的所述緩存中的数据块各自减少到一个特定阔值时均通知各自一个特定的线程来从所述服务器的永久存储器中读取对应的所述文件的其他部分数据并维持在所述緩存之中。7.根据权利要求6所述的方法,其特征在于每一个所述阈值均为不小于每一个所述客户机所对应的线程数的整数。8.根据权利要求1或2所述的方法,其中,所述容错技术进一步包括按时间和次数进行重试。9.一种加速上传与下载文件的系统,其特征在于包括一个或多个位于客户端的、采用权利要求1至8任一项所述的多线程技术及容错技术的客户机;以及位于服务端的、釆用权利要求1至8任一项所述的緩存存取技术的服务器。10.根据权利要求9所述的系统,其特征在于,所述容错技术包括按时间和次数进行重试。全文摘要一种加速上传与下载文件的方法及其系统,包括在一个或多个客户端的客户机中采用多线程技术、容错技术;以及在服务端的服务器中采用缓存存取技术。在每一个所述客户机处均对将要传输的文件进行分块然后都各自同时启动多个线程并发上传或下载这个或这些数据块且采用例如按时间和次数进行重试的容错技术。服务器根据每一个所述客户机的线程数来建立数据缓存及准备好大于线程数的数据块。客户机在上传或下载时就通知服务器的一个特定的线程来将所述缓存中的数据进一步写入到服务器的永久存储器或从其中读取出来。文档编号H04L29/08GK101656751SQ200810118530公开日2010年2月24日申请日期2008年8月18日优先权日2008年8月18日发明者王晓勇申请人:北京数码大方科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1