一种文件传输系统及其方法技术方案

技术编号:27751939 阅读:35 留言:0更新日期:2021-03-19 13:48
本发明专利技术涉及一种文件传输系统及其方法,该系统包括传输源端和传输目的端,所述传输源端和传输目的端相互通信连接,所述传输源端用于创建小文件队列、大文件队列以及发送数据队列,用于启动多线程任务、发送指定数据包给传输目的端、接收来自传输目的端的回执数据包并进行解析;所述传输目的端用于创建数据合并队列,用于启动多线程任务、接收来自传输源端的指定数据包并进行解析、发送回执数据包给传输源端。与现有技术相比,本发明专利技术通过创建不同的安全队列,结合小文件合并数据包、多线程并发任务以及大文件后传数据的方式,能够大大提高文件传输速度、降低传输时间,适用于海量文件传输场景。

【技术实现步骤摘要】
一种文件传输系统及其方法
本专利技术涉及数据传输
,尤其是涉及一种文件传输系统及其方法。
技术介绍
随着云计算、大数据、物联网的发展,用户拥有的数据量呈指数级急剧增长、海量文件也随之产生。由于没有海量文件的专门传输工具,用户目前通常使用FTP、SFTP等文件传输工具进行文件传输,但这种方法存在明显的弊端,FTP、SFTP等传输工具传输文件的方式是一个一个文件排队进行传输,只有在上一个文件传输完毕,下一个文件才能开始进行传输,这在海量小文件和大文件混合场景下,其传输性能非常低下、传输耗时较长、传输速度较慢。
技术实现思路
本专利技术的目的就是为了克服上述现有技术存在的缺陷而提供一种文件传输系统及其方法,以提高海量文件传输速度、降低传输时间。本专利技术的目的可以通过以下技术方案来实现:一种文件传输系统,包括传输源端和传输目的端,所述传输源端和传输目的端相互通信连接,所述传输源端用于创建小文件队列、大文件队列以及发送数据队列,用于启动多线程任务、发送指定数据包给传输目的端、接收来自传输目的端的回执数据包并进行解析;所述传输目的端用于创建数据合并队列,用于启动多线程任务、接收来自传输源端的指定数据包并进行解析、发送回执数据包给传输源端。进一步地,所述传输源端通过TCP/IP协议与传输目的端相互通信连接。进一步地,所述传输源端设置有TCPClient模块、第一线程池模块和第一安全队列模块,所述TCPClient模块与传输目的端连接,用于实现传输源端与传输目的端之间的数据传输;所述第一线程池模块用于构建第一线程池,以启动传输源端的多线程任务;所述第一安全队列模块用于创建小文件队列、大文件队列以及发送数据队列。进一步地,所述传输目的端设置有TCPServer模块、第二线程池模块和第二安全队列模块,所述TCPServer模块与传输源端连接,用于实现传输目的端与传输源端之间的数据传输;所述第二线程池模块用于构建第二线程池,以启动传输目的端的多线程任务;所述第二安全队列模块用于创建数据合并队列。一种文件传输方法,包括以下步骤:S1、传输源端遍历待传输的目录及文件,并在遍历过程中查看文件属性,根据文件的大小,创建得到小文件队列和大文件队列,其中,小文件队列和大文件队列均用于存放文件路径,大文件队列还用于存放目录的文件路径;S2、传输源端启动多个小文件发送任务,通过从小文件队列中取元素,以生成第一类型数据包并发送给传输目的端;传输源端启动多个大文件发送任务,通过从大文件队列中取元素,以生成第二类型数据包并发送给传输目的端;S3、传输目的端接收来自传输源端的数据包,并对接收的数据包进行解析,若接收的数据包为第一类型数据包,则读取第一类型数据包内的信息,将读取的信息打包成一个数据结构,以创建得到数据合并队列,之后启动多个小文件数据写入任务,完成小文件传输;若接收的数据包为第二类型数据包,则读取第二类型数据包内的信息,并向传输源端发送包含回执消息的第三类型数据包;S4、传输源端接收来自传输目的端的第三类型数据包,读取第三类型数据包内的消息,若回执消息为成功,则执行步骤S5,否则输出错误消息、停止传输任务;S5、传输源端读取第三类型数据包内的信息,若传输的文件类型是目录,则继续执行发送任务,若传输的文件类型为文件,则将该文件路径放入创建的发送数据队列中,之后启动多个大文件数据发送任务,通过从发送数据队列中取出元素,以生成第四类型数据包并发送给出传输目的端;S6、传输目的端接收来自传输源端的第四类型数据包,通过读取第四类型数据包内的信息,完成大文件传输。进一步地,所述步骤S2的具体过程为:传输源端启动多个小文件发送任务,这些任务从小文件队列中取元素,当取出的元素大小累加大于预设阈值时停止,将取出的每个元素的内容读出写入到缓存区,之后将缓存区的位置信息写到Header的存储结构中,并设置消息类型为第一类型,接着把缓存区中的内容压缩产生compressbuffer,最后把compressbuffer与Header拼接成第一类型数据包发送给传输目的端;传输源端启动多个大文件发送任务,这些任务从大文件队列中取出元素,每取出一个元素,将该元素的文件类型,文件名称以及文件属性组成一个数据包,并设置消息类型为第二类型,得到第二类型数据包后发送给传输目的端。进一步地,所述步骤S3的具体过程为:若接收的数据包为第一类型数据包,则从第一类型数据包中读取文件个数为n,之后循环n次,以读取每个文件的文件名、文件属性、文件在缓存区的偏移、文件在缓存区的长度以及compressbuffer,将这些信息打包成一个数据结构,放入数据合并队列中;之后启动多个小文件写入任务,这些任务从数据合并队列中取出元素,每个元素中包含文件名、文件属性、文件在缓存区的偏移、文件在缓存区的长度以及compressbuffer,将compressbuffer解压得到数据缓存,根据文件名以及文件属性,创建对应的文件,根据文件在缓存区的偏移和长度,从缓存区中读取文件内容,并将读取的文件内容写入创建的文件中,完成小文件传输;若接收的数据包为第二类型数据包,则继续读取文件类型、文件名称和文件属性,若文件类型为目录,则创建对应的目录,若文件类型为文件,则创建对应文件,并保存打开的文件句柄,最后向传输源端发送第三类型数据包,其中,第三类型数据包中的信息包括文件类型、文件名、传输成功标记以及错误消息。进一步地,所述步骤S4的具体过程为:传输源端接收来自传输目的端的第三类型数据包,读取第三类型数据包内的消息,若传输成功标记对应于成功,则执行步骤S5;若传输成功标记对应于失败,则输出错误消息、停止传输任务。进一步地,所述步骤S5中传输源端启动多个大文件数据发送任务的具体过程为:传输源端启动多个大文件数据发送任务,这些任务从发送数据队列中取出元素,每取出一个元素,则读取对应的文件内容,当读取的文件内容达到预设阈值时,则发送一个第四类型数据包给传输目的端,直到所有文件内容发送完毕,其中,第四类型数据包中的信息包括文件路径、数据偏移、缓存长度以及compressbuffer。进一步地,所述步骤S6的具体过程为:传输目的端从第四类型数据包中读取文件路径、数据偏移、缓存长度以及compressbuffer,之后解压compressbuffer得到数据缓存,再根据文件路径找到文件句柄,最后将缓存中的数据写入文件中,完成大文件传输。与现有技术相比,本专利技术具有以下优点:一、本专利技术利用小文件队列存入小文件的文件路径,利用大文件队列存入大文件或目录的文件路径,并结合数据合并队列和发送数据队列,使得小文件能够从传输源端被合并一起传输给传输目的端,使得大文件能够先在传输目的端创建对应的文件、之后再将大文件数据写入传输目的端,从而避免文件需要一个一个排队进行传输,不管在海量小文件场景下、海量大文件场景下还是大小文本文档来自技高网...

【技术保护点】
1.一种文件传输系统,其特征在于,包括传输源端(1)和传输目的端(2),所述传输源端(1)和传输目的端(2)相互通信连接,所述传输源端(1)用于创建小文件队列、大文件队列以及发送数据队列,用于启动多线程任务、发送指定数据包给传输目的端(2)、接收来自传输目的端(2)的回执数据包并进行解析;/n所述传输目的端(2)用于创建数据合并队列,用于启动多线程任务、接收来自传输源端(1)的指定数据包并进行解析、发送回执数据包给传输源端(1)。/n

【技术特征摘要】
1.一种文件传输系统,其特征在于,包括传输源端(1)和传输目的端(2),所述传输源端(1)和传输目的端(2)相互通信连接,所述传输源端(1)用于创建小文件队列、大文件队列以及发送数据队列,用于启动多线程任务、发送指定数据包给传输目的端(2)、接收来自传输目的端(2)的回执数据包并进行解析;
所述传输目的端(2)用于创建数据合并队列,用于启动多线程任务、接收来自传输源端(1)的指定数据包并进行解析、发送回执数据包给传输源端(1)。


2.根据权利要求1所述的一种文件传输系统,其特征在于,所述传输源端(1)通过TCP/IP协议与传输目的端(2)相互通信连接。


3.根据权利要求2所述的一种文件传输系统,其特征在于,所述传输源端(1)设置有TCPClient模块(11)、第一线程池模块(12)和第一安全队列模块(13),所述TCPClient模块(11)与传输目的端(2)连接,用于实现传输源端(1)与传输目的端(2)之间的数据传输;
所述第一线程池模块(12)用于构建第一线程池,以启动传输源端(1)的多线程任务;
所述第一安全队列模块(13)用于创建小文件队列、大文件队列以及发送数据队列。


4.根据权利要求3所述的一种文件传输系统,其特征在于,所述传输目的端(2)设置有TCPServer模块(21)、第二线程池模块(22)和第二安全队列模块(23),所述TCPServer模块(21)与传输源端(1)连接,用于实现传输目的端(2)与传输源端(1)之间的数据传输;
所述第二线程池模块(22)用于构建第二线程池,以启动传输目的端(2)的多线程任务;
所述第二安全队列模块(23)用于创建数据合并队列。


5.一种应用权利要求1所述文件传输系统的文件传输方法,其特征在于,包括以下步骤:
S1、传输源端遍历待传输的目录及文件,并在遍历过程中查看文件属性,根据文件的大小,创建得到小文件队列和大文件队列,其中,小文件队列和大文件队列均用于存放文件路径,大文件队列还用于存放目录的文件路径;
S2、传输源端启动多个小文件发送任务,通过从小文件队列中取元素,以生成第一类型数据包并发送给传输目的端;
传输源端启动多个大文件发送任务,通过从大文件队列中取元素,以生成第二类型数据包并发送给传输目的端;
S3、传输目的端接收来自传输源端的数据包,并对接收的数据包进行解析,若接收的数据包为第一类型数据包,则读取第一类型数据包内的信息,将读取的信息打包成一个数据结构,以创建得到数据合并队列,之后启动多个小文件数据写入任务,完成小文件传输;
若接收的数据包为第二类型数据包,则读取第二类型数据包内的信息,并向传输源端发送包含回执消息的第三类型数据包;
S4、传输源端接收来自传输目的端的第三类型数据包,读取第三类型数据包内的消息,若回执消息为成功,则执行步骤S5,否则输出错误消息、停止传输任务;
S5、传输源端读取第三类型数据包内的信息,若传输的文件类型是目录,则继续执行发送任务,若传输的文件类型为文件,则将该文件路径放入创建的发送数据队列中,之后启动多个大文件数据发送任务,通过从发送数据队列中取出元素,以生成第四类型数据包并发送给出传输目的端;
S6、传输目...

【专利技术属性】
技术研发人员:肖伟
申请(专利权)人:上海爱数信息技术股份有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1