一种文件传输方法及装置的制作方法

文档序号:7553551阅读:140来源:国知局
专利名称:一种文件传输方法及装置的制作方法
技术领域
本发明涉及数据传输技术领域,具体涉及一种文件传输方法及装置。
背景技术
十几年来,文件传输协议(File Transfer Protocol,缩写为FTP)—直比较流行。FTP在RFC959中被定义,并于1985年10月发布,FTP是一种跨平台的、简单且易于实现的协议。FTP传输协议具有以下特点:1.数据传输模式默认使用美国信息交换标准代码(American Standard Code for Information Interchange,缩写为 ASCII)传输数据,有时会造成文件损坏;2.FTP协议未对密码安全做出规定,用户信息数据以明文的形式传输,任何对通讯路径上的路由具有控制能力的人,可以通过嗅探程序获取用户敏感信息;3.在FTP服务器上检索文件一般需要经过客户端建立到FTP服务器控制端口的传输控制协议(Transmission Control Protocol,缩写为TCP)连接、等待TCP握手完成、等待服务器发送回执、向服务器发送用户名并等待响应、向服务器发送密码并等待响应、向服务器发送返回服务器使用的操作系统命令(即SYST命令)并等待响应、向服务器发送数据类型为二进制的(B卩TYPE I命令)命令并等待响应、发送IP地址和两字节的端口 ID卿PORT命令)并等待响应、建立数据传输链接、通过数据传输链接、等待服务器发送二进制指令、客户端发送QUIT命令等十多个步骤。采用Socket文件传输(Socket是一个针对TCP和UDP编程的接口,可以借助Socket建立TCP连接)会根据文件不同的格式采取最合适的编码方式,然后序列化成二进制在网络上 进行传输,二进制在网络线路上传输最快;同时Socket文件传输,对传输的数据按照加密算法进行加密后才传输,就算用嗅探程序截获数据,也不容易得知其中的内容;最后Socket文件传输时,客户端首先向服务器发送相关用户信息,得到服务器认证通过以后,就可以向服务器传输文件了,简化了操作步骤,同时采用多线程,在客户端拆分、合并或上传操作后,由服务器合并、拆分或下载操作,提高了文件传输的效率。经测试,比FTP文件传输相比,可节省至少一半的时间。中国专利文献CN101453479A公开了一种快速的文件传输系统,包括:命令模块,用于发起文件传输;文件查验模块,用于传输文件的各子文件;完整性验证模块,用于重新传输未通过验证的子文件。该发明的快速文件传输协议可以方便的组织、管理和调度文件传输的过程。但是该发明对所有文件均采用多线程的文件传输方式,多线程的文件传输方式可以最大限度的提高CPU使用效率,但是线程间的切换也会消耗时间,对于较小的文件而言,对文件进行拆分,将拆分后的多个子文件采用多线程进行传输,接收到全部子文件后再将文件进行合并,文件拆分的时间、线程间切换的时间与文件合并的时间之和将大于对文件直接采用单线程传输所需要的时间,也就是说对于较小的文件采用多线程传输,反而是消耗了更多的时间,反而会降低文件传输速度,进而使得上述文件传输系统传输效率低下
发明内容
本发明所要解决的是现有技术中文件传输均采用多线程的文件传输方式,线程间切换会消耗时间并可能降低文件传输效率的技术问题,提供一种更高效的文件传输方法及
装直。为解决上述技术问题,本发明采用的技术方案如下:一种文件传输方法,包括以下步骤:S1:客户端向服务器发出传输文件的请求;S2:所述服务器 接收并响应所述请求,将响应结果发送给所述客户端;S3:所述客户端接收所述响应结果,判断所述服务器是否接受请求,若是,则执行步骤S4 ;若否,则执行步骤S7 ;S4:判断所述文件是否大于100Μ,若是,则执行步骤S6 ;若否,则执行步骤S5 ;S5:将所述文件以单线程文件传输方式进行传输,跳转执行步骤S7 ;S6:将所述文件以多线程文件传输方式进行传输;S7:所述客户端的本次请求执行结束;其中,所述传输包括上传和下载。在所述步骤S6中,还包括以下步骤:S601:将所述文件拆分成多个子文件;S602:所述多个子文件由线程池的监控线程分给多个线程;S603:判断CPU使用率是否大于80%,并且空闲内存是否大于整个所述文件的大小,若是,则执行步骤S603 ;若否,则执行步骤S604 ;S603:为每个线程分配默认优先级,并进行文件传输,跳转执行步骤S605 ;S604:为每个线程分配高于默认优先级的优先级,并进行文件传输;S605:在接收到所述子文件后释放该子文件对应的线程所占资源,并返回线程池;S606:在所述多个子文件均成功接收后,接收方对所述多个子文件进行合并还原出所述文件。在所述步骤S5和所述步骤S6中,所述传输为加密传输。所述步骤S5之后或所述步骤S604之后,还包括判断所述文件或所述子文件是否通过正确性验证的步骤,若是,则传输结束;若否,则将所述文件或所述子文件重新传输。所述重新传输的次数小于或等于50。当客户端请求下载文件时,服务器在请求下载的文件不存在或该文件禁止下载时发出拒绝下载请求的响应结果。基于同一发明构思,本发明还提供一种文件传输装置,包括客户端和服务器,所述客户端进一步包括:请求模块、第一判断模块、第二判断模块、第一单线程传输模块、第一多线程传输模块;其中,所述请求模块,用于客户端向服务器发出传输文件的请求;所述第一判断模块,用于所述客户端判断所述服务器是否接受请求;所述第二判断模块,用于判断待传输文件是否大于100Μ,当所述文件大于100Μ,将所述文件发送至第一多线程文件传输模块进行多线程文件传输;否则,将所述文件发送至第一单线程文件传输模块;
所述第一单线程文件传输模块,用于将所述文件以单线程文件传输方式进行传输并结束;所述第一多线程文件传输模块,用于将所述文件以多线程文件传输方式进行传输并结束;所述服务器进一步包括:响应模块、第三判断模块、第二单线程文件传输模块、第二多线程文件传输模块;其中,所述响应模块,用于服务器接收客户端的请求并响应,将所述响应结果发送给所述客户端;所述第三判断模块,用于判断待传输文件是否大于100M,当所述文件大于100M,将所述文件发送至第二多线程文件传输模块进行多线程文件传输;否则,将待传输文件发送至第二单线程文件传输模块;所述第二单线程文件传输模块,用于将所述文件以单线程文件传输方式进行传输并结束; 所述第二多线程文件传输模块,用于将所述文件以多线程文件传输方式进行传输并结束。所述客户端还包括第一加密模块、第一正确性验证模块和第一重传设定模块;其中,所述第一加密模块用于将所述文件加密;所述第一正确性验证模块用于判断传输的文件或子文件是否通过正确性验证的步骤,若未通过则要返回第一单线程文件传输模块或第一多线程文件传输模块进行重新传输;所述第一重传设定模块,用于设定所述重新传输的次数,所述重新传输的次数小于或等于50。所述服务器端还包括第二加密模块、第二正确性验证模块和第二重传设定模块,其中,所述第二加密模块用于将所述文件加密;所述第二正确性验证模块用于判断传输的文件或子文件是否通过正确性验证的步骤,若未通过则要返回第二单线程文件传输模块或第二多线程文件传输模块进行重新传输;所述第二重传设定模块,用于设定重新传输的次数,所述重新传输的次数小于或等于50。所述第一多线程文件传输模块包括第一拆分子模块、第一判断子模块、第一分配子模块、第一释放子模块和第一重传子模块;其中,所述第一拆分子模块,用于将所述文件拆分成多个子文件,并将所述多个子文件由线程池的监控线程分给多个线程;所述第一判断子模块,用于判断CPU使用率是否大于80%,并且空闲内存是否大于整个所述文件的大小,将所述判断结果传递给第一分配子模块;所述第一分配子模块,用于根据第一判断子模块传递的判断结果为每个线程分配优先级,当判断结果为CPU使用率是否大于80%,并且空闲内存大于整个所述文件时,为所述每个线程分配默认优先级;否则为每个线程分配高于默认优先级的优先级;所述第一释放子模块,用于释放该子文件对应的线程所占资源,并返回线程池;所述第一合并子模块,用于在所述多个子文件均成功接收后,接收方对所述多个子文件进行合并还原出所述文件;所述第二多线程文件传输模块进一步包括第二拆分子模块、第二判断子模块、第二分配子模块、第二释放子模块、第二重传子模块;其中,所述第二拆分子模块,用于将所述文件拆分成多个子文件,并将所述多个子文件由线程池的监控线程分给多个线程;所述第二判断子模块,用于判断CPU使用率是否大于80%,并且空闲内存是否大于整个所述文件的大小,将所述判断结果传递给第二分配子模块;所述第二分配子模块,用于根据第二判断子模块传递的判断结果为每个线程分配优先级,当判断结果为CPU使用率是否大于80%,并且空闲内存大于整个所述文件时,为所述每个线程分配默认优先级;否则为每个线程分配高于默认优先级的优先级;所述第二释放子模块,用于释放该子文件对应的线程所占资源,并返回线程池;所述第二合并子模块,用于在所述多个子文件均成功接收后,接收方对所述多个子文件进行合并还原出所述文件。

本发明的上述技术方案相比现有技术具有以下优点:1.本发明所述的文件传输方法及装置,当文件大于100M时,采用多线程传输方式,当文件小于或等于100M时,采用单线程传输方式。对大于100M文件用多线程方式传输,能够最大限度地利用CPU ;对于小于或等于100M的文件采用单线程传输,可避免线程间切换消耗过多的时间,通过对于不同大小的文件采用不同的传输方式,可以提高整个文件传输方法和传输装置的文件传输效率。2.当采用多线程传输方式时,将所述文件拆分成多个子文件并加密,分配给线程进行传输,并由客户端或服务器进行正确性验证,若通过验证,则传输成功,若未通过验证则进行重新传输,若重新验证达到一定次数,则表示传输失败,在子文件传输成功时将子文件合并成一个文件。当文件较大时,将文件拆分成多个子文件同时传输,能够提高文件传输的效率。将新上传文件的次数设置为小于或等于50,使子文件传输后验证不正确时,说明传输没有成功,要进行重新传输,但无限制地进行重新传输将使程序陷入死循环,因此将重新传输设置为50次,使文件在正常的网络状态下有充分的机会传输成功,若不传输成功则放弃本次传输,进行下一个操作。


为了使本发明的内容更容易被清楚的理解,下面根据本发明的具体实施例并结合附图,对本发明作进一步详细的说明,其中:图1为本发明的实施例一的文件传输方法的流程图;图2为本发明的实施例一的文件传输方法的步骤5的流程图;图3为本发明的实施例一的文件传输方法的步骤6的流程图;图4为本发明的实施例二的文件传输方法的流程 图5为本发明的实施例三的文件传输系统的结构示意图。
具体实施例方式实施例一:参见图1,本发明的文件传输方法,在下载时,包括以下步骤:S1:客户端向服务器发出下载文件的请求;S2:所述服务器接收并响应所述请求,将响应结果发送给所述客户端;S3:所述客户端接收所述响应结果,判断所述服务器是否允许下载,若是,则执行步骤S4 ;若否,则执行步骤S7 ;S4:判断所述文件是否大于100M,若是,则执行步骤S6 ;若否,则执行步骤S5 ;S5:将所述文件以单线程文件传输方式进行传输,跳转执行步骤S7 ;S6:将所述文件以多线程文件传输方式进行传输;S7:所述客户端的本次下载请求执行结束。进一步地,参见图2,在所述步骤S5,包括以下步骤:S501:创建线程;
`
S502:将所述文件加密,在本实施例中,所述文件为50M ;S503:传输所述文件;S504:判断所述文件是否传输成功,若是,则执行步骤S505 ;若否,则返回执行步骤 S503 ;S505:结束本次文件传输,撤销所述线程。在带宽为IOOMb的网络环境下,采用多线程传输50M的文件,将文件拆分成10个子文件,所需要时间为2s-3s,创建10个线程,每个线程传输5M的子文件,创建线程需要Ims时间,撤销线程需要50ms时间,切换线程由操作系统完成,因为CPU在某个时间片内,只能执行一个任务,以Wind0ws95为例,切换线程的时间片为20ms,执行单个线程的时间为ls,文件传输完成后进行合并,所需时间为ls-2s,整个文件传输则共需要13.71-15.71s,而采用单线程传输,需要5s时间,可见在需要下载的文件较小的情况下,由于多线程传输文件需要拆分文件、合并文件,以及在线程间切换,消耗了大量的时间,反而不如单线程直接传输效率高。所以,在判断文件较小的时候,采用单线程传输效率较高。进一步地,参见图3,在所述步骤S6中,还包括以下步骤:S601:创建10个线程;S602:将所述文件拆分成10个子文件;在本实施例中,所述文件为500,拆分为10个子文件,每个子文件50M。S603:将所述10个子文件分别进行加密;S604:所述10个子文件由线程池的监控线程分给10个线程;S605:判断CPU使用率是否大于80%,并且空闲内存是否大于整个所述文件的大小,若是,则执行步骤S606 ;若否,则执行步骤S607 ;S606:为每个线程分配普通优先级,并进行文件传输,跳转执行步骤S605 ;S607:为每个线程分配较高的优先级,并进行文件传输;
在本实施例中,线程的优先级分为5级,由高到低分别为最高级(highest)、高级(abovenormal)、普通级(normal)、低级(belownormal)和最低级(lowest)。默认的为普通优先级,即normal,较高的优先级包括两项,即highest、abovenormal,较低的优先级包括两项,即belownormal、lowest。根据CPU的使用率来确定,若CPU使用率是否大于90%,若是,则为线程分配普通优先级或者较低的优先级,否则为线程分配较高的优先级;S608:在所述子文件均成功接收后,释放该子文件对应的线程所占资源,撤销所述线程,并返回线程池;S609:接收方对所述多个子文件进行合并还原出所述文件。在带宽为IOOMb的网络环境下,采用多线程传输,创建10个线程,每个线程传输50M的子文件,创建线程需要Ims时间,撤销线程需要50ms时间,切换线程由操作系统完成,因为CPU在某个时间片内,只能执行一个任务,以Windows95为例,Windows95执行一个任务的时间片为20ms,每个线程传输所负责的文件块需要8s,共需要8.051s时间,而采用单线程传输,需要54s时间,可见,在文件较大的情况下,多线程传输将文件分成多个子文件,同时传输,虽然需要拆分文件、合并文件,以及在线程间切换,仍然会较单线程相比效率要高得多。在所述步骤S502和步骤S602中,所述文件和子文件的加密算法为哈希算法中的MD5算法和SHAl算法。所述步骤S608中,还包括判断各个所述子文件是否通过正确性验证的步骤,若是,则所述子文件传输结束;若·否,则将所述子文件重新传输。在本实施例中,所述子文件包括以下部分:文件名,文件起始位置标志、文件结束位置标志。根据所述文件的以上部分来验证所述文件是否传输正确。进一步地,在所述步骤S5和S6中,所述重新传输的次数小于或等于50。实施例二:参见图4,本发明的文件传输方法,在上传时与下载时的步骤基本相同,只是在步骤S1、S2和S3中有所不同,在所述实施例二中,不需要判断所述服务器发出的响应是何种类型,只要所述服务器做出响应,所述客户端就开始向所述服务器开始传输文件,直至文件传输成功。由于其余步骤与所述实施一基本相同,此处不再赘述。实施例三:参见图5,本发明还提供一种文件传输装置,包括客户端和服务器,所述客户端进一步包括:请求模块、第一判断模块、第二判断模块、第一单线程传输模块、第一多线程传输模块;其中,所述请求模块,用于客户端向服务器发出传输文件的请求;所述第一判断模块,用于所述客户端判断所述服务器是否接受请求;所述第二判断模块,用于判断待传输文件是否大于100M,当所述文件大于100M,将所述文件发送至第一多线程文件传输模块进行多线程文件传输;否则,将所述文件发送至第一单线程文件传输模块;所述第一单线程文件传输模块,用于将所述文件以单线程文件传输方式进行传输并结束;所述第一多线程文件传输模块,用于将所述文件以多线程文件传输方式进行传输并结束;所述服务器进一步包括:响应模块、第三判断模块、第二单线程文件传输模块、第二多线程文件传输模块;其中,所述响应模块,用于服务器接收客户端的请求并响应,将所述响应结果发送给所述客户端;所述第三判断模块,用于判断待传输文件是否大于100M,当所述文件大于100M,将所述文件发送至第二多线程文件传输模块进行多线程文件传输;否则,将待传输文件发送至第二单线程文件传输模块;所述第二单线程文件传输模块,用于将所述文件以单线程文件传输方式进行传输并结束;所述第二多线程文件传输模块,用于将所述文件以多线程文件传输方式进行传输并结束。所述客户端还包括第一加密模块、第一正确性验证模块和第一重传设定模块;其中,所述第一加密模块用于将所述文件加密;所述第一正确性验证模块用于判断传输的文件或子文件是否通过正确性验证的步骤,若未通过则要返回第一单线程文件传输模块或第一多线程文件传输模块进行重新传输;所述第一重传设定模块,用于设定所述重新传输的次数,所述重新传输的次数小于或等于50。所述服务器端还包括第二加密模块、第二正确性验证模块和第二重传设定模块;其中,所述第二加密模块用于将所述文件加密;所述第二正确性验证模块用于判断传输的文件或子文件是否通过正确性验证的步骤,若未通过则要返回第二单线程文件传输模块或第二多线程文件传输模块进行重新传输;所述第二重传设定模块,用于设定重新传输的次数,所述重新传输的次数小于或等于50。所述第一多线程文件传输模块包括第一拆分子模块、第一判断子模块、第一分配子模块、第一释放子模块和第一重传子模块;其中,所述第一拆分子模块,用于将所述文件拆分成多个子文件,并将所述多个子文件由线程池的监控线程分给多个线程;所述第一判断子模块,用于判断CPU使用率是否大于80%,并且空闲内存是否大于整个所述文件的大小,将所述判断结果传递给第一分配子模块;所述第一分配子模块,用于根据第一判断子模块传递的判断结果为每个线程分配优先级,当判断结果为CPU使用率是否大于80%,并且空闲内存大于整个所述文件时,为所述每个线程分配默认优先级;否则为每个线程分配高于默认优先级的优先级;所述第一释放 子模块,用于释放该子文件对应的线程所占资源,并返回线程池;
所述第一合并子模块,用于在所述多个子文件均成功接收后,接收方对所述多个子文件进行合并还原出所述文件;所述第二多线程文件传输模块进一步包括第二拆分子模块、第二判断子模块、第二分配子模块、第二释放子模块、第二重传子模块;其中,所述第二拆分子模块,用于将所述文件拆分成多个子文件,并将所述多个子文件由线程池的监控线程分给多个线程;所述第二判断子模块,用于判断CPU使用率是否大于80%,并且空闲内存是否大于整个所述文件的大小,将所述判断结果传递给第二分配子模块;所述第二分配子模块,用于根据第二判断子模块传递的判断结果为每个线程分配优先级,当判断结果为CPU使用率是否大于80%,并且空闲内存大于整个所述文件时,为所述每个线程分配默认优先级;否则为每个线程分配高于默认优先级的优先级;所述第二释放子模块,用于释放该子文件对应的线程所占资源,并返回线程池;所述第二合并子模块,用于在所述多个子文件均成功接收后,接收方对所述多个子文件进行合并还原出所述文件。显然,上述 实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。
权利要求
1.一种文件传输方法,其特征在于,包括以下步骤: S1:客户端向服务器发出传输文件的请求; 52:所述服务器接收并响应所述请求,将响应结果发送给所述客户端; 53:所述客户端接收所述响应结果,判断所述服务器是否接受请求,若是,则执行步骤S4 ;若否,则执行步骤S7 ; 54:判断所述文件是否大于IOOM,若是,则执行步骤S6 ;若否,则执行步骤S5 ; 55:将所述文件以单线程文件传输方式进行传输,跳转执行步骤S7 ; 56:将所述文件以多线程文件传输方式进行传输; 57:所述客户端的本次请求执行结束; 其中,所述传输包括上传和下载。
2.根据权利要求1所述的文件传输方法,其特征在于,在所述步骤S6中,还包括以下步骤: 5601:将所述文件拆分成多个子文件; 5602:所述多个子文件由线程池的监控线程分给多个线程; 5603:判断CPU使用率是否大于80%,并且空闲内存是否大于整个所述文件的大小,若是,则执行步骤S604 ;若否,则执行步骤S605 ; 5604:为每个线程分配默认优先级,并进行文件传输,跳转执行步骤S606 ; 5605:为每个线程分配高于默认优先级的优先级,并进行文件传输; 5606:在接收到所述子文件后释放该子文件对应的线程所占资源,并返回线程池; 5607:在所述多个子文件均成功接收后,接收方对所述多个子文件进行合并还原出所述文件。
3.根据权利要求1或2所述的文件传输方法,其特征在于,在所述步骤S5和所述步骤S6中,所述传输为加密传输。
4.根据权利要求2所述的文件传输方法,其特征在于,所述步骤S5之后或所述步骤S604或所述步骤S605之后,还包括判断所述文件或所述子文件是否通过正确性验证的步骤,若是,则传输结束;若否,则将所述文件或所述子文件重新传输。
5.根据权利要求4所述的文件传输方法,其特征在于,所述重新传输的次数小于或等于50。
6.根据权利要求1一 5任一所述的文件传输方法,其特征在于,当客户端请求下载文件时,服务器在请求下载的文件不存在或该文件禁止下载时发出拒绝下载请求的响应结果。
7.一种文件传输装置,包括客户端和服务器,其特征在于, 所述客户端进一步包括:请求模块、第一判断模块、第二判断模块、第一单线程传输模块、第一多线程传输模块; 其中,所述请求模块,用于客户端向服务器发出传输文件的请求; 所述第一判断模块,用于所述客户端判断所述服务器是否接受请求; 所述第二判断模块,用于判断待传输文件是否大于100M,当所述文件大于100M,将所述文件发送至第一多线程文件传输模块进行多线程文件传输;否则,将所述文件发送至第一单线程文件传输模块; 所述第一单线程文件传输模块,用于将所述文件以单线程文件传输方式进行传输并结束; 所述第一多线程文件传输模块,用于将所述文件以多线程文件传输方式进行传输并结束; 所述服务器进一步包括:响应模块、第三判断模块、第二单线程文件传输模块、第二多线程文件传输模块; 其中,所述响应模块,用于服务器接收客户端的请求并响应,将所述响应结果发送给所述客户端; 所述第三判断模块,用于判断待传输文件是否大于100M,当所述文件大于100M,将所述文件发送至第二多线程文件传输模块进行多线程文件传输;否则,将待传输文件发送至第二单线程文件传输模块; 所述第二单线程文件传输模块,用于将所述文件以单线程文件传输方式进行传输并结束; 所述第二多线程文件传输模块,用于将所述文件以多线程文件传输方式进行传输并结束。
8.根据权利要求7所述的文件传输装置,其特征在于,所述客户端还包括第一加密模块、第一正确性验证模块和第一重传设定模块; 其中, 所述第一加密模块用于将所述文件加密; 所述第一正确性验证模块用于判断传输的文件或子文件是否通过正确性验证的步骤,若未通过则要返回第一单线程文件传输模块或第一多线程文件传输模块进行重新传输; 所述第一重传设定模块,用于设定所述重新传输的次数,所述重新传输的次数小于或等于50。
9.根据权利要求7所述的文件传输装置,其特征在于,所述服务器端还包括第二加密模块、第二正确性验证模块和第二重传设定模块,其中, 所述第二加密模块用于将所述文件加密; 所述第二正确性验证模块用于判断传输的文件或子文件是否通过正确性验证的步骤,若未通过则要返回第二单线程文件传输模块或第二多线程文件传输模块进行重新传输; 所述第二重传设定模块,用于设定重新传输的次数,所述重新传输的次数小于或等于50。
10.根据权利要求7所述的文件传输装置,其特征在于,所述第一多线程文件传输模块包括第一拆分子模块、第一判断子模块、第一分配子模块、第一释放子模块和第一重传子模块; 其中, 所述第一拆分子模块,用于将所述文件拆分成多个子文件,并将所述多个子文件由线程池的监控线程分给多个线程; 所述第一判断子模块,用于判断CPU使用率是否大于80%,并且空闲内存是否大于整个所述文件的大小,将所述判断结果传递给第一分配子模块; 所述第一分配子模块,用于根据第一判断子模块传递的判断结果为每个线程分配优先级,当判断结果为CPU使用率是否大于80%,并且空闲内存大于整个所述文件时,为所述每个线程分配默认优先级;否则为每个线程分配高于默认优先级的优先级; 所述第一释放子模块,用于释放该子文件对应的线程所占资源,并返回线程池; 所述第一合并子模块,用于在所述多个子文件均成功接收后,接收方对所述多个子文件进行合并还原出所述文件; 所述第二多线程文件传输模块进一步包括第二拆分子模块、第二判断子模块、第二分配子模块、第二释放子模块、第二重传子模块; 其中, 所述第二拆分子模块,用于将所述文件拆分成多个子文件,并将所述多个子文件由线程池的监控线程分给多个线程; 所述第二判断子模块,用于判断CPU使用率是否大于80%,并且空闲内存是否大于整个所述文件的大小,将所述判断结果传递给第二分配子模块; 所述第二分配子模块,用于根据第二判断子模块传递的判断结果为每个线程分配优先级,当判断结果为CPU使用率是否大于80%,并且空闲内存大于整个所述文件时,为所述每个线程分配默认优先级;否则为每个线程分配高于默认优先级的优先级; 所述第二释放子模块,用于释放该子文件对应的线程所占资源,并返回线程池; 所述第二合并子模块,用于在所述多个子文件均成功接收后,接收方对所述多个子文件进行合并还原出所述文件 。
全文摘要
本发明一种文件传输方法及装置,所述方法包括以下步骤①客户端向服务器发出传输文件请求;②服务器接收并响应请求;③客户端接收响应结果,判断服务器是否接受请求,若是则执行步骤④;若否则执行步骤⑤;④判断文件是否大于100M,若是,则以多线程方式传输;若否,以单线程文件传输方式进行传输;⑤所述客户端的本次请求执行结束;传输包括上传和下载。本发明的文件传输方法及装置,当文件较大时,采用多线程传输方式,能够最大限度地利用CPU;当文件较小时,采用单线程传输方式,可避免线程间切换消耗过多的时间,通过对于不同大小的文件采用不同的传输方式,可以提高整个文件传输方法和传输装置的文件传输效率。
文档编号H04L29/08GK103237049SQ20131008630
公开日2013年8月7日 申请日期2013年3月18日 优先权日2013年3月18日
发明者唐晓军, 杨峰 申请人:北京易华录信息技术股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1