一种基于FTP文件高效传输的方法与流程

文档序号:12789749阅读:1001来源:国知局

本发明涉及网络技术,具体地说是一种基于FTP文件高效传输的方法。



背景技术:

FTP是一种广泛使用的网络服务,它是数据传输的重要通信方式,大多数文件上传和下载都是靠FTP完成的,它实现了可靠且有效的传输数据的功能;同时,只要进行文件传输的系统都支持FTP协议,就可以在不同类型的计算机上进行文件传输,使文件传输不会因各主机文件、存储、系统的差异而影响。因此,FTP一直是Internet上广泛使用的服务。

传统的FTP采用单线程上传文件,在网络宽带有限的条件下,对带宽的抢占优势小,导致上传速度慢;同时,一旦发生意外中断,就需要重新上传文件的全部数据,极大的影响数据上传的效率。



技术实现要素:

本发明的技术任务是提供一种基于FTP文件高效传输的方法,来解决FTP采用单线程上传文件,造成上传速度慢以及中断后只能重新上传,造成上传效率低的问题。

本发明的技术任务是按以下方式实现的,一种基于FTP文件高效传输的方法,其特征在于:该方法包括如下步骤:

(1)、查看是否存在指定文件对应的临时配置文件:

①、如果不存在,则执行步骤(2);

②、如果存在,则跳转执行步骤(3);

(2)、首先,获取用户设置的上传线程数目N、待上传文件在服务器端的路径、文件上传的进度和文件传输格式(默认为二进制格式);然后,根据线程数目N,将原文件分割成N块(逻辑分割,只获得每个块开始和结束位置的偏移量);专门开启一个线程,用来建立和管理对应的临时配置文件,将每个线程完成任务情况实时记录到临时配置文件中(默认为:每隔六秒记录一次),方便断点续传时使用,跳转执行步骤(4);

(3)、首先,读取临时配置文件,获取之前的数据传输格式、上传线程数目N和各个线程的上传进度,为每个线程重新分配任务,接着之前的断点位置上传;专门开启一个线程,用来管理对应的临时配置文件,将每个线程完成任务情况实时记录到临时配置文件中(默认为:每隔六秒记录一次),方便断点续传时使用;

(4)、开启N个线程,分别创建本地套接字,应用TCP/IP协议与目标服务器建立N个控制连接;

(5)、N个线程分别发送USER xxx \r\n和PASSyyy \r\n命令将用户名(xxx)和密码(yyy)发送到FTP服务器,登录FTP服务器;

(6)、成功登录后,N个线程分别使用TYPE命令设置统一的数据传输格式;

(7)、N个线程分别发送PASV \r\n命令,该命令的回应包含服务器正监听的主机地址端口地址,客户端从回复信息中获得FTP服务器的IP地址和临时开放的用于建立数据连接的端口号,用于N个线程与FTP服务器建立N个数据连接;

(8)、N个线程分别发送RSET xxx \r\n命令,设置文件传输的起始偏移量,其中,xxx是起始偏移量的数值,每个线程的偏移量不同;

(9)、N个线程分别发送APPE xxx \r\n命令,向FTP服务器发起文件上传请求,其中,xxx是要在服务器上创建的文件名,N个线程使用相同的文件名;

(10)、N个线程与FTP服务器分别建立数据连接,每个线程分配一个文件块,开始并行上传各个文件块数据;

(11)、主线程每隔十秒钟查询一次各个线程的任务完成情况,当有线程分配的传输任务完成后,利用RDT算法,为剩余任务量最多的线程分担部分传输任务;

(12)、如果再次出现意外中断,则重复进行步骤(1)到步骤(11);至到所有文件块都上传完毕,则关闭所有的数据连接和控制连接;

(13)、删除临时配置文件,一次文件上传过程结束。

作为优选,所述步骤(1)中若存在指定文件对应的临时配置文件,则说明该文件将要进行断点续传。

作为优选,所述步骤(2)中文件传输格式默认为二进制格式。

作为优选,所述步骤(2)中源文件分割采用逻辑分割,只获得每个块开始和结束为止的偏移量。

作为优选,所述步骤(6)中数据传输格式为二进制格式时,发送个FTP服务器的命令为TYPE I \r\n。

作为优选,所述FTP服务器支持文件的断点续传。

本发明的基于FTP文件高效传输的方法具有以下优点:本发明通过多线程技术、断点续传技术等,有效解决传统FTP上传操作中存在上传速度慢以及文件传输效率低的问题。

故本发明具有设计合理、使用方便、一物多用等特点,因而,具有很好的推广使用价值。

附图说明

下面结合附图对本发明进一步说明。

附图1为基于FTP文件高效传输的方法的流程框图。

具体实施方式

参照说明书附图和具体实施例对本发明的基于FTP文件高效传输的方法作以下详细地说明。

实施例:

如附图1所示,本发明的基于FTP文件高效传输的方法,该方法包括如下步骤:

(1)、查看是否存在指定文件对应的临时配置文件:

①、如果不存在,则执行步骤(2);

②、如果存在(说明将要进行的断点续传),则跳转执行步骤(3);

(2)、首先,获取用户设置的上传线程数目N、待上传文件在服务器端的路径、文件上传的进度和文件传输格式(默认为二进制格式);然后,根据线程数目N,将原文件分割成N块(逻辑分割,只获得每个块开始和结束位置的偏移量);专门开启一个线程,用来建立和管理对应的临时配置文件,将每个线程完成任务情况实时记录到临时配置文件中(默认为:每隔六秒记录一次),方便断点续传时使用,跳转执行步骤(4);

(3)、首先,读取临时配置文件,获取之前的数据传输格式、上传线程数目N和各个线程的上传进度,为每个线程重新分配任务,接着之前的断点位置上传;专门开启一个线程,用来管理对应的临时配置文件,将每个线程完成任务情况实时记录到临时配置文件中(默认为:每隔六秒记录一次),方便断点续传时使用;

(4)、开启N个线程,分别创建本地套接字,应用TCP/IP协议与目标服务器建立N个控制连接;

(5)、N个线程分别发送USER xxx \r\n和PASSyyy \r\n命令将用户名(xxx)和密码(yyy)发送到FTP服务器,登录FTP服务器;

(6)、成功登录后,N个线程分别使用TYPE命令设置统一的数据传输格式,例如:数据传输格式为二进制格式时,发送个FTP服务器的命令为TYPE I \r\n;

(7)、N个线程分别发送PASV \r\n命令,该命令的回应包含服务器正监听的主机地址端口地址,客户端从回复信息中获得FTP服务器的IP地址和临时开放的用于建立数据连接的端口号,用于N个线程与FTP服务器建立N个数据连接;

(8)、N个线程分别发送RSET xxx \r\n命令,设置文件传输的起始偏移量,其中,xxx是起始偏移量的数值,每个线程的偏移量不同;

(9)、N个线程分别发送APPE xxx \r\n命令,向FTP服务器发起文件上传请求,其中,xxx是要在服务器上创建的文件名,N个线程使用相同的文件名(FTP服务器支持文件的断点续传);

(10)、N个线程与FTP服务器分别建立数据连接,每个线程分配一个文件块,开始并行上传各个文件块数据;

(11)、主线程每隔十秒钟查询一次各个线程的任务完成情况,当有线程分配的传输任务完成后,利用RDT算法,为剩余任务量最多的线程分担部分传输任务;

(12)、如果再次出现意外中断,则重复进行步骤(1)到步骤(11);至到所有文件块都上传完毕,则关闭所有的数据连接和控制连接;

(13)、删除临时配置文件,一次文件上传过程结束。

通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的种具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。例如将实施例2至实施例6,任意的两两结合或任意三种结合或任意四种结合或五种全部结合的方式,从而形成各种其它的技术方案。

除说明书所述的技术特征外,均为本专业技术人员的已知技术。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1