一种两线程FTP的传输方法及系统.pdf

上传人:大师****2 文档编号:21260 上传时间:2018-01-12 格式:PDF 页数:12 大小:731.20KB
返回 下载 相关 举报
摘要
申请专利号:

CN201510128007.6

申请日:

2015.03.23

公开号:

CN104767801A

公开日:

2015.07.08

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):H04L 29/08申请日:20150323|||公开

IPC分类号:

H04L29/08

主分类号:

H04L29/08

申请人:

上海大唐移动通信设备有限公司; 大唐移动通信设备有限公司

发明人:

余再跃

地址:

200233上海市徐汇区钦江路333号41幢4-6楼

优先权:

专利代理机构:

北京路浩知识产权代理有限公司11002

代理人:

王莹

PDF下载: PDF下载
内容摘要

本发明提供了一种两线程ftp的传输方法及系统,该方法包括:将原文件的所有字节按从最后一个数据到第一个数据的顺序进行排列,得到反序文件;第一线程从所述原文件的第一个数据开始读取所述原文件;第二线程从所述反序文件的第一个数据开始读取所述反序文件;判断所述第一线程和所述第二线程读取的文件数据之和是否大于等于所述原文件的大小,当所述读取的数据之和大于等于所述原文件的大小时,停止所述第一线程和第二线程;将所述第一线程和所述第二线程读取的文件数据组合成传输文件。本发明最大限度地节约了客户端的CPU资源,控制过程简单,避免频繁切换下载位置以及REST指令的调用,实现两线程ftp的快速传输。

权利要求书

1.  一种两线程ftp的传输方法,其特征在于,所述方法包括:
将原文件的所有字节按从最后一个数据到第一个数据的顺序进行排列,得到反序文件;
第一线程从所述原文件的第一个数据开始读取所述原文件;
第二线程从所述反序文件的第一个数据开始读取所述反序文件;
判断所述第一线程和所述第二线程读取的文件数据之和是否大于等于所述原文件的大小,当所述读取的数据之和大于等于所述原文件的大小时,停止所述第一线程和第二线程;
将所述第一线程和所述第二线程读取的文件数据组合成传输文件。

2.
  根据权利要求1所述的方法,其特征在于,所述方法还包括:
为包括至少一个原文件的原文件目录创建一个对应的反序文件目录;
将与所述至少一个原文件一一对应的至少一个反序文件存储在所述反序文件目录下。

3.
  根据权利要求1所述的方法,其特征在于,所述将所述第一线程和所述第二线程读取的文件数据组合成传输文件,具体包括:
创建一个和所述原文件同样大小的传输文件;
将所述第一线程读取的文件数据中的第一个数据对应所述传输文件的第一个数据,依次以所述第一线程读取的文件数据覆盖所述传输文件的第一部分;
将所述第二线程读取的文件数据中的第一个数据对应所述传输文件的最后一个数据,依次以所述第二线程读取的文件数据覆盖所述传输文件中未被所述第一线程读取的文件数据所覆盖的第二部分。

4.
  根据权利要求3所述的方法,其特征在于,所述方法还包括:
将所述第一线程和所述第二线程读取的文件数据缓存在内存中,当所述内存中缓存的文件数据到达预设数据量或数据传输完成时,将所述内存中缓存的文件数据进行所述传输文件的覆盖,释放占用的内存。

5.
  根据权利要求1所述的方法,其特征在于,所述原文件和所述反序文件部署在不同的磁盘上。

6.
  一种两线程ftp的传输系统,其特征在于,所述系统包括:
反序文件生成单元,用于将原文件的所有字节按从最后一个数据到第一个数据的顺序进行排列,得到反序文件;
第一线程读取单元,用于第一线程从所述原文件的第一个数据开始读取所述原文件;
第二线程读取单元,用于第二线程从所述反序文件的第一个数据开始读取所述反序文件;
判断单元,用于判断所述第一线程和所述第二线程读取的文件数据之和是否大于等于所述原文件的大小,当所述读取的数据之和大于等于所述原文件的大小时,停止所述第一线程和第二线程;
传输文件生成单元,用于将所述第一线程和所述第二线程读取的文件数据组合成传输文件。

7.
  根据权利要求6所述的系统,其特征在于,所述系统还包括:
反序文件目录创建单元,用于为包括至少一个原文件的原文件目录创建一个对应的反序文件目录;
存储单元,用于将与所述至少一个原文件一一对应的至少一个反序文件存储在所述反序文件目录下。

8.
  根据权利要求6所述的系统,其特征在于,所述传输文件生成单元包括:
传输文件创建模块,用于创建一个和所述原文件同样大小的传输文件;
第一覆盖模块,用于将所述第一线程读取的文件数据中的第一个数据对应所述传输文件的第一个数据,依次以所述第一线程读取的文件数据覆盖所述传输文件的第一部分;
第二覆盖模块,用于将所述第二线程读取的文件数据中的第一个数据对应所述传输文件的最后一个数据,依次以所述第二线程读取的文件数据覆盖所述传输文件中未被所述第一线程读取的文件数据所覆盖的第二部分。

9.
  根据权利要求8所述的系统,其特征在于,所述系统还包括:
缓存单元,用于将所述第一线程和所述第二线程读取的文件数据缓存在内存中,当所述内存中缓存的文件数据到达预设数据量或数据传输完成时,将所述内存中缓存的文件数据进行所述传输文件的覆盖,释放占用的内存。

10.
  根据权利要求6所述的系统,其特征在于,所述原文件和所述反序文件部署在不同的磁盘上。

说明书

一种两线程ftp的传输方法及系统
技术领域
本发明涉及因特网文件传输协议应用技术领域,尤其涉及一种两线程ftp的传输方法及系统。
背景技术
文件传输协议ftp(File Transfer Protocol)是当前网络服务重要的应用之一,它实现了可靠且有效传输数据的功能;同时,ftp的具有另一项突出的优势:只要进行文件传输的系统都支持ftp协议,就可以方便地在不同类型的计算机之间进行文件传输,使用户不会因为各类主机文件存储器系统的差异而受影响。因此,ftp一直是Internet上广泛使用的服务。
传统的两线程ftp下载和多线程的ftp下载方法是类似的,即采用如下方案实现文件的下载:第一个线程从文件开始位置下载,第二个线程通过rest指令调整下载起始位置,从文件中间某一个位置开始下载。
发明人在实现本发明过程中,发现现有技术中至少存在以下问题:
现有技术在有些ftp服务器不支持REST指令,特别是一些以前部署的传统的ftp服务器,这种情况下,两线程下载就无法实现了。
对于支持REST指令的服务器,由于两个线程下载的速度常常有一定差别,有一个先下载完,下载完之后,这个线程也不能闲着,只能重新通过计算,从未下载部分中寻找一个合适的位置,然后在此位置再开始下载,待一定时间后,这两个线程中又会有一个先完成任务,这个先完成任务的,又需要通过计算,调整位置,再开始下载,控制过程比较复杂。
由于每次从ftp服务器获取到的,都是多个字节,因此每次下载调整位置前,一般都多传输了一些字节,造成资源浪费。例如,现在只差一个字节就需要调整位置了了,可是服务器一下穿过来100个字节,进而造成99个字节的浪费。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决或者减缓上述问题的两线程ftp的传输方法和相应的两线程ftp的传输系统。
根据本发明的一个方面,提供了一种两线程ftp的传输方法,该方法包括:
将原文件的所有字节按从最后一个数据到第一个数据的顺序进行排列,得到反序文件;
第一线程从所述原文件的第一个数据开始读取所述原文件;
第二线程从所述反序文件的第一个数据开始读取所述反序文件;
判断所述第一线程和所述第二线程读取的文件数据之和是否大于等于所述原文件的大小,当所述读取的数据之和大于等于所述原文件的大小时,停止所述第一线程和第二线程;
将所述第一线程和所述第二线程读取的文件数据组合成传输文件。
其中,所述方法还包括:
为包括至少一个原文件的原文件目录创建一个对应的反序文件目录;
将与所述至少一个原文件一一对应的至少一个反序文件存储在所述反序文件目录下。
其中,所述将所述第一线程和所述第二线程读取的文件数据组合成传输文件,具体包括:
创建一个和所述原文件同样大小的传输文件;
将所述第一线程读取的文件数据中的第一个数据对应所述传输文件的第一个数据,依次以所述第一线程读取的文件数据覆盖所述传输文件的第一部分;
将所述第二线程读取的文件数据中的第一个数据对应所述传输文件的最后一个数据,依次以所述第二线程读取的文件数据覆盖所述传输文件中未被所述第一线程读取的文件数据所覆盖的第二部分。
其中,所述方法还包括:
将所述第一线程和所述第二线程读取的文件数据缓存在内存中,当所述内存中缓存的文件数据到达预设数据量或数据传输完成时,将所述内存中缓存的文件数据进行所述传输文件的覆盖,释放占用的内存。
其中,所述原文件和所述反序文件部署在不同的磁盘上。
根据本发明的另一个方面,提供了一种两线程ftp的传输系统,该系统包括:
反序文件生成单元,用于将原文件的所有字节按从最后一个数据到第一个数据的顺序进行排列,得到反序文件;
第一线程读取单元,用于第一线程从所述原文件的第一个数据开始读取所述原文件;
第二线程读取单元,用于第二线程从所述反序文件的第一个数据开始读取所述反序文件;
判断单元,用于判断所述第一线程和所述第二线程读取的文件数据之和是否大于等于所述原文件的大小,当所述读取的数据之和大于等于所述原文件的大小时,停止所述第一线程和第二线程;
传输文件生成单元,用于将所述第一线程和所述第二线程读取的文件数据组合成传输文件。
其中,所述系统还包括:
反序文件目录创建单元,用于为包括至少一个原文件的原文件目录创建一个对应的反序文件目录;
存储单元,用于将与所述至少一个原文件一一对应的至少一个反序文件存储在所述反序文件目录下。
其中,所述传输文件生成单元包括:
传输文件创建模块,用于创建一个和所述原文件同样大小的传输文件;
第一覆盖模块,用于将所述第一线程读取的文件数据中的第一个数据对应所述传输文件的第一个数据,依次以所述第一线程读取的文件数据覆盖所述传输文件的第一部分;
第二覆盖模块,用于将所述第二线程读取的文件数据中的第一个数据对应所述传输文件的最后一个数据,依次以所述第二线程读取的文件数据覆盖所述传输文件中未被所述第一线程读取的文件数据所覆盖的第二部分。
其中,所述系统还包括:
缓存单元,用于将所述第一线程和所述第二线程读取的文件数据缓存在内存中,当所述内存中缓存的文件数据到达预设数据量或数据传输完成时,将所述内存中缓存的文件数据进行所述传输文件的覆盖,释放占用的内存。
其中,所述原文件和所述反序文件部署在不同的磁盘上。
本发明的有益效果为:
本发明提供的两线程ftp的传输方法及系统,对于ftp客户端,避免了两线程复杂的文件位置调度,可以保证两线程同时结束;本发明可以方便进行文件部署,把两个线程对应的文件放入不同磁盘,减少访问冲突,提高访问效率;避免了服务器端和客户端之间的REST交互,因而减少了服务器端和客户端之间的交互。本发明在两线程的前提下,最大地利用了网络资源,最大地节约了客户端的CPU资源,而 控制最简单,避免了调用REST指令以及频繁切换位置。而且本发明还可以适用于不支持REST指令的ftp服务器,且并不需要更改ftp服务器的代码。
附图说明
通过参考附图会更加清楚的理解本发明的特征和优点,附图是示意性的而不应理解为对本发明进行任何限制,在附图中:
图1为本发明实施例提供的一种两线程ftp的传输方法的流程示意图;
图2为本发明另一实施例提供的一种两线程ftp的传输方法中步骤S15的细分流程图;
图3为本发明实施例提供的一种两线程ftp的传输系统的结构框图;以及
图4为本发明另一实施例提供的一种两线程ftp的传输系统中传输文件生成单元的内部结构框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种两线程ftp的传输方法的流程图,如图1所示,该方法包括以下步骤:
S11、将原文件的所有字节按从最后一个数据到第一个数据的顺序进行排列,得到反序文件;
S12、第一线程从所述原文件的第一个数据开始读取所述原文件;
S13、第二线程从所述反序文件的第一个数据开始读取所述反序文件;
S14、判断所述第一线程和所述第二线程读取的文件数据之和是否大于等于所述原文件的大小,当所述读取的数据之和大于等于所述原文件的大小时,停止所述第一线程和第二线程;
S15、将所述第一线程和所述第二线程读取的文件数据组合成传输文件。
进一步地,本发明实施例提供的一种两线程ftp的传输方法还包括:
为包括至少一个原文件的原文件目录创建一个对应的反序文件目录;
将与所述至少一个原文件一一对应的至少一个反序文件存储在所述反序文件目录下。
本发明实施例中,ftp服务器对ftp目录下的文件,在服务器端准备两个目录。例如,文件目录如下:/file_server/download/,作为原文件目录;
ftp服务器为上述原文件目录创建一个对应的目录,/file_server/download_inverse/,将该对应的目录作为反序文件目录。其中在download/目录下存放的是正常的文件即原文件,在download_inverse/目录下存放的文件和download/目录下的文件是一一对应的,但是文件内容是相反的顺序即反序文件。其中,原文件目录download/下存放有原文件a.txt,文件中共有3个字节,3个字节分别为0xA1,0xA2,0xA3,则反序文件目录download_inverse/下存放有相应的反序文件a.txt,其内容分别为0xA3,0xA2,0xA1。
进一步地,本发明实施例中步骤S15将所述第一线程和所述第二线程读取的文件数据组合成传输文件,如图2所示,具体包括如下细分步骤:
S151、创建一个和所述原文件同样大小的传输文件;
S152、将所述第一线程读取的文件数据中的第一个数据对应所述传输文件的第一个数据,依次以所述第一线程读取的文件数据覆盖所述传输文件的第一部分;
S153、将所述第二线程读取的文件数据中的第一个数据对应所述传输文件的最后一个数据,依次以所述第二线程读取的文件数据覆盖所述传输文件中未被所述第一线程读取的文件数据所覆盖的第二部分。
本发明实施例中,当用户发起读取download/a.txt时,ftp客户端第一个线程则从download/下读取a.txt,从文件开头开始读。ftp客户端第二个线程则从download_inverse/目录下读取a.txt,也从文件开头开始读。当两个线程读取的数据之和>=文件大小时,两个线程同时停止。两个线程需要把读取的文件数据按照偏移量正确的写入文件,具体可以采用如下方法:
首先创建一个和原文件a.txt的大小一样大的传输文件,文件里所有的数据都为0,然后收到所述第一线程和第二线程读取的服务器上的文件数据,写文件时,调整文件指针到偏移位置,将数据正确的覆盖原先的0;当然,第二个线程写文件时,需要将数据字节的顺序再次进行调整,例如,将上述实施例中,收到0xA3、0xA2,调整为0xA2,0xA3,然后再写入文件相应的最后两个位置,详细步骤如下:
将所述第一线程读取的文件数据写入创建的传输文件的相应的位置。相应位置的确定方法如下:第一个数据对应所述传输文件的第一个数据,依次以所述第一线程读取的文件数据覆盖所述传输文件的第一部分;
将所述第二线程读取的文件数据写入创建的传输文件的相应的位置。相应位置的计算方法如下:接收的第一个数据对应所述传输文 件的最后一个数据,依次以所述第二线程读取的文件数据覆盖所述传输文件中未被所述第一线程读取的文件数据所覆盖的第二部分。其中,第二线程写入文件的过程比第1线程复杂。
例如,第二线程目前已经写入了文件M个字节,即文件的最后M个字节已经写入,然后又收到了N个字节,则要调整当前文件指针的位置,调整到距离文件末尾(EOF指针)M+N个字节处,然后将这N个字节写入。
进一步地,本发明实施例中的两线程ftp的传输方法还包括:将所述第一线程和所述第二线程读取的文件数据缓存在内存中,当所述内存中缓存的文件数据到达预设数据量或数据传输完成时,将所述内存中缓存的文件数据进行所述传输文件的覆盖,释放占用的内存。
本发明实施例,将所述第一线程和所述第二线程读取的文件数据缓存在内存中,当所述内存中缓存的文件数据到达预设数据量或者传输完成(即传输量等于文件大小)时,将所述内存中缓存的文件数据进行所述传输文件的覆盖,释放占用的内存。
进一步地,所述原文件和所述反序文件部署在不同或相同的磁盘上,本发明实施例可以之间将一个原文件和对应的所述反序文件部署在不同的磁盘上,也可以通过将存放至少一个源文件的所述原文件目录和存放相应反序文件的所述反序文件目录部署在不同的磁盘上。本发明实施例中将原文件目录download/和反序文件目录download_inverse/部署到不同的磁盘上,可以减少访问冲突,提高访问效率。
本发明实施例虽然在服务器端创建反序文件会消耗一些时间,但很多场景下,同一个文件被很多个客户端进行下载,从而给多个客户端节约了时间,因此,如果下载的客户端足够多,则其带来的效益还是可观的。
本发明实施例切实提高了两线程下的文件传输速度,本实施不仅 可以避免频繁的REST调用,同时提高了客户端和服务器的处理效率,从而在实际测试中,网速也能够获得一定的提高。
而且本发明同样可以适用于不支持REST指令的FTP服务器,并不需要更改FTP服务器的代码。
图3为本发明实施例提供的一种两线程ftp的传输系统的结构框图;如图3所示,该系统包括:
反序文件生成单元11,用于将原文件的所有字节按从最后一个数据到第一个数据的顺序进行排列,得到反序文件;
第一线程读取单元12,用于第一线程从所述原文件的第一个数据开始读取所述原文件;
第二线程读取单元13,用于第二线程从所述反序文件的第一个数据开始读取所述反序文件;
判断单元14,用于判断所述第一线程和所述第二线程读取的文件数据之和是否大于等于所述原文件的大小,当所述读取的数据之和大于等于所述原文件的大小时,停止所述第一线程和第二线程;
传输文件生成单元15,用于将所述第一线程和所述第二线程读取的文件数据组合成传输文件。
进一步地,本发明实施例提出的两线程ftp的传输系统还包括:
反序文件目录创建单元,用于为包括至少一个原文件的原文件目录创建一个对应的反序文件目录;
存储单元,用于将与所述至少一个原文件一一对应的至少一个反序文件存储在所述反序文件目录下。
本发明实施例中,ftp服务器对ftp目录下的文件,在服务器端准备两个目录。例如,文件目录如下:/file_server/download/,作为原文件目录;ftp服务器为上述原文件目录创建一个对应的目录,/file_server/download_inverse/,将该对应的目录作为反序文件目录。其中在download/目录下存放的是正常的文件即原文件,在 download_inverse/目录下存放的文件和download/目录下的文件是一一对应的,但是文件内容是相反的顺序即反序文件。其中,原文件目录download/下存放有原文件a.txt,文件中共有3个字节,3个字节分别为0xA1,0xA2,0xA3,则反序文件目录download_inverse/下存放有相应的反序文件a.txt,其内容分别为0xA3,0xA2,0xA1。
进一步地,在本发明实施例中,提出的传输文件生成单元15,如图4所示,具体包括:
传输文件创建模块151,用于创建一个和所述原文件同样大小的传输文件;
第一覆盖模块152,用于将所述第一线程读取的文件数据中的第一个数据对应所述传输文件的第一个数据,依次以所述第一线程读取的文件数据覆盖所述传输文件的第一部分;
第二覆盖模块153,用于将所述第二线程读取的文件数据中的第一个数据对应所述传输文件的最后一个数据,依次以所述第二线程读取的文件数据覆盖所述传输文件中未被所述第一线程读取的文件数据所覆盖的第二部分。
本发明实施例中,当用户发起读取download/a.txt时,ftp客户端第一个线程则从download/下读取a.txt,从文件开头开始读。ftp客户端第二个线程则从download_inverse/目录下读取a.txt,也从文件开头开始读。当两个线程读取的数据之和>=文件大小时,两个线程同时停止。两个线程需要把读取的文件数据按照偏移量正确的写入文件,具体可以采用如下方法:首先创建一个和原文件a.txt的大小一样大的文件,文件里所有的数据都为0,然后收到所述第一线程和第二线程读取的服务器上的文件数据,写文件时,调整文件指针到偏移位置,将数据正确的覆盖原先的0;当然,第二个线程写文件时,需要将数据字节的顺序再次进行调整,例如,将上述实施例中,收到0xA3、0xA2,调整为0xA2,0xA3,然后再写入文件相应的最后两个位置。
进一步地,在本发明实施例提出的两线程ftp的传输系统还包括:
缓存单元,用于将所述第一线程和所述第二线程读取的文件数据缓存在内存中,当所述内存中缓存的文件数据到达预设数据量或数据传输完成时,将所述内存中缓存的文件数据进行所述传输文件的覆盖,释放占用的内存。
进一步地,在本发明实施例的两线程ftp的传输系统中,本发明实施例中的所述原文件和所述反序文件部署在不同的磁盘上。可以减少访问冲突,提高访问效率。
本发明实施例提出的两线程ftp的传输系统同样可以适用于不支持REST指令的FTP服务器,且不需要更改FTP服务器的代码。
综上所述,本发明提供的一种两线程ftp的传输方法及系统,对于ftp客户端,避免了两线程复杂的文件位置调度,可以保证两线程同时结束,浪费(多读取)的字节很少,只在读完那一瞬间才可能多读一些字节;对于ftp服务器端,可以方便地进行部署,方便地把两个线程对应的内容放入不同磁盘,减少访问冲突,提高访问效率;没有了服务器端和客户端之间的REST交互,因而减少了服务器端和客户端之间的交互。此方法在两线程的前提下,最大地利用了网络资源,最大地节约了客户端的CPU资源,而控制最简单,避免了调用REST指令以及频繁切换位置。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可以通过硬件实现,也可以借助软件加必要的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附 图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。

一种两线程FTP的传输方法及系统.pdf_第1页
第1页 / 共12页
一种两线程FTP的传输方法及系统.pdf_第2页
第2页 / 共12页
一种两线程FTP的传输方法及系统.pdf_第3页
第3页 / 共12页
点击查看更多>>
资源描述

《一种两线程FTP的传输方法及系统.pdf》由会员分享,可在线阅读,更多相关《一种两线程FTP的传输方法及系统.pdf(12页珍藏版)》请在专利查询网上搜索。

本发明提供了一种两线程ftp的传输方法及系统,该方法包括:将原文件的所有字节按从最后一个数据到第一个数据的顺序进行排列,得到反序文件;第一线程从所述原文件的第一个数据开始读取所述原文件;第二线程从所述反序文件的第一个数据开始读取所述反序文件;判断所述第一线程和所述第二线程读取的文件数据之和是否大于等于所述原文件的大小,当所述读取的数据之和大于等于所述原文件的大小时,停止所述第一线程和第二线程;将所。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 电学 > 电通信技术


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1