一种文件传输方法及系统与流程

文档序号:11206568阅读:509来源:国知局
一种文件传输方法及系统与流程

本发明涉及集群技术领域,特别是涉及一种文件传输方法及系统。



背景技术:

消息中间件是指利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。其中,评价一个消息中间件的重要指标是传输文件的性能,尤其是传输大文件。

传统的文件传输方式是将整个文件读入内存,然后再整体发送给接收端。该方式虽然能够保证文件的完整性,但当文件的容量过大时,内存容量不够就会造成内存溢出问题,从而无法正常传输文件。

由此可见,在文件传输过程中,如何克服内存溢出的问题是本领域技术人员亟待解决地问题。



技术实现要素:

本发明的目的是提供一种文件传输方法及系统,用于在文件传输过程中,克服内存溢出的问题。

为解决上述技术问题,本发明提供一种文件传输方法,包括:

将获取到的文件进行分段得到多个子文件,其中各所述子文件所占用的空间均小于内存的剩余容量;

按照各所述子文件在所述文件中的位置分别为各所述子文件添加序列号;

将各所述子文件依次写入服务器的内存以发送到对应的接收端。

优选地,在对所述文件进行分段之前还包括:

判断所述文件所占用的空间是否大于所述内存的剩余容量;

其中,如果是,则对所述文件进行分段。

优选地,还包括:

为各所述子文件添加所述文件对应的统一组号。

优选地,所述将获取到的文件进行分段得到多个子文件具体为:按照所述内存的剩余容量和当前带宽将所述文件分段得到多个所述子文件。

优选地,还包括:

持续监听接收端口,并将所述接收端口中接收到的所述子文件放入接收端,直到所述接收端接收到全部的所述子文件为止;

其中,所述接收端按照所述序列号的顺序将各所述子文件进行拼接以得到所述文件。

为解决上述技术问题,本发明提供一种文件传输系统,包括:

分段模块,用于将获取到的文件进行分段得到多个子文件,其中各所述子文件所占用的空间均小于内存的剩余容量;

第一添加模块,用于按照各所述子文件在所述文件中的位置分别为各所述子文件添加序列号;

写入模块,用于将各所述子文件依次写入服务器的内存以发送到对应的接收端。

优选地,还包括:

判断模块,用于在对所述文件进行分段之前判断所述文件所占用的空间是否大于所述内存的剩余空间;

其中,如果是,则触发所述分段模块。

优选地,还包括:

第二添加模块,用于为各所述子文件添加所述文件对应的统一组号。

优选地,所述分段模块具体按照所述内存的剩余空间和当前带宽将所述文件分段得到多个所述子文件。

优选地,还包括:

监控模块,用于持续监听接收端口,并将所述接收端口中接收到的所述子文件放入接收端,直到所述接收端接收到全部的所述子文件为止;

其中,所述接收端按照所述序列号的顺序将各所述子文件进行拼接以得到所述文件。

本发明所提供的文件传输方法,该方法能够将文件进行分段,使得每个子文件所占的空间都小于内存的剩余容量,然后再将每个子文件依次写入内存以进行文件的传输。由此可见,本方法可以避免内存溢出的问题。此外,本发明还提供一种文件传输系统,效果如上所述。

附图说明

为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种文件传输方法的流程图;

图2为本发明实施例提供的另一种文件传输方法的流程图;

图3为本发明实施例提供的另一种文件传输方法的流程图;

图4为本发明实施例提供的一种文件传输系统的结构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。

本发明的核心是提供一种文件传输方法及系统,用于在文件传输过程中,克服内存溢出的问题。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。

图1为本发明实施例提供的一种文件传输方法的流程图。如图1所示,文件传输方法包括:

s10:将获取到的文件进行分段得到多个子文件,其中各子文件所占用的空间均小于内存的剩余容量。

在具体实施中,如果待发送的文件所占的空间大于当前服务器的内存的剩余容量的话,则将文件直接写入内存会导致内存溢出的问题。本发明中将文件进行分段得到多个子文件,而每个子文件所占用的空间均小于内存的剩余容量。需要说明的是,如何对一个文件进行分段本发明不做限定,只要保证每个子文件所占用的空间小于内存的剩余容量即可。

作为一种优选地实施方式,在其他实施例中,将获取到的文件进行分段得到多个子文件具体为:按照内存的剩余容量和当前带宽将文件分段得到多个子文件。可以理解的是,这里的分段原则就是依据两个参数,一个是内存的剩余容量,另一个是当前带宽。对于第一个参数,再此不作赘述,对于第二个参数来说,是防止各子文件过大,而当前带宽较低时,文件传输过慢的问题。

例如,当前内存的剩余容量是2g,文件所占用的空间为3g,则按照各子文件所占用的空间均小于内存的剩余容量进行分段的话,可以将文件划分为3段,得到3个子文件,例如,第一个子文件为1g,第二个子文件为1g,第三个子文件为1g。但是由于当前网络带宽较低,如果将1g的子文件进行传输时,会导致传输过慢的问题,因此,基于这种情况可以将文件划分的段更多一些,例如划分为6段。需要说明的是,将一个文件划分为多段,并不是越多越好,也不是越少越好,需要综合考虑内存的剩余容量和当前带宽两个参数。

s11:按照各子文件在文件中的位置分别为各子文件添加序列号。

本步骤中为各子文件添加序列号的目的是,能够让接收端在接收到子文件后对各子文件进行拼接,防止出现子文件丢失以及拼接错误的问题。在具体实施中,可以在子文件的消息头中添加序列号。需要说明的是,各子文件的序列号是按照子文件在整个文件中的位置排列的。

例如,一个文件依次分为五个子文件,分别是第一个子文件、第二个子文件、第三个子文件、第四个子文件、第五个子文件,则这些子文件的序列号可以依次为3、2、1、0、-1。在具体实施中,为了便于接收端判断是否接收完毕,可以通过序列号来体现结束标志,例如将序列号为-1作为结束标志,那么接收端在对文件进行分段时,将最后一个子文件的序列号设置为-1。可以理解的是,序列号具体为何数字,以何标志作为结束标志均可以根据实际情况设定,本发明不再限定。

s12:将各子文件依次写入服务器的内存以发送到对应的接收端。

需要说明的是,本步骤中的子文件放入的队列中是按照在文件中的位置顺序放入的,例如一个子文件在文件中要先于另一个子文件,则该子文件在队列的位置就比另一个子文件的位置靠前,换句话说,子文件在传输过程中是按照在文件中的位置的先后顺序传输的,这样防止传输混乱。

本实施例提供的文件传输方法,能够将文件进行分段,使得每个子文件所占的空间都小于内存的剩余容量,然后再将每个子文件依次写入内存以进行文件的传输。由此可见,本方法可以避免内存溢出的问题。

图2为本发明实施例提供的另一种文件传输方法的流程图。如图2所示,作为优选地实施方式,在对文件进行分段之前还包括:

s20:判断文件所占用的空间是否大于内存的剩余容量。

其中,如果是,则对文件进行分段。

在上一实施例中,对于文件所占用的空间并没有进行区分,可以将任意一个文件进行分段,但是考虑到对文件进行分段之后,接收端还需要进拼接,所以当文件所占用的空间不太大时,无需对文件进行分段,即直接按照现有技术中的传输方式即可。因此,本实施例中,在对文件分段之前首先判断该文件所占用的空间是否大于内存的剩余容量,如果大于,则进行分段。

在上述实施例的基础上,还包括:

为各子文件添加文件对应的统一组号。

可以理解的是,在集群中,具有多个服务器,每个服务器既可以作为发送端,也可以作为接收端,并且同一个发送端可以发射多个不同的文件。对于这种情况来说,为了对不同的文件进行区分,本实施例中,对同一个文件中的给子文件赋予同一个统一组号,也可以叫做groupid字段。也就是说,如果两个子文件具有相同的统一组号,则说明这两个子文件属于同一个文件,相反,如果两个子文件具有不同的统一组号,则说明这两个子文件属于不同的文件。当接收端口接收到子文件时,通过识别统一组号,就可以将具有相同统一组号的子文件发送到同一个接收端,防止出现传输混乱,子文件分布在不同的接收端,最后接收端无法拼接完整的文件的问题。

在具体实施中,可以在子文件的消息头部添加统一组号。

上文中各实施例提供的文件传输方法都是应用在发送端,本发明还提供一种应用于接收端的文件接收方法。

图3为本发明实施例提供的另一种文件传输方法的流程图。如图3所示,在上述实施例的基础上还包括:

s30:持续监听接收端口,并将接收端口中接收到的子文件放入接收端,直到接收端接收到全部的子文件为止。

其中,接收端按照序列号的顺序将各子文件进行拼接以得到文件。

在具体实施中,发送端需要依次发送各子文件,因此,需要不停地监听接收端口是否有文件传输过来,当监听到有文件传输过来后,将子文件放入接收端,然后继续监听,循环上述操作步骤,直到接收完全部地子文件为止。例如步骤s40中获取到的子文件的序列号依次为3、2、1、0、-1,则只有在接收到序列号为-1的子文件才完成文件的接收。

当子文件包含有统一组号时,则将接收端口中接收到的子文件放入接收端具体包括:

判断当前统一组号是否已经存在;

如果是,则将当前子文件放入与当前统一组号对应的接收端,否则,将当前子文件放入新的接收端;

其中,同一个接收端具有相同的统一组号。

可以理解的是,如果两个子文件具有相同的统一组号,则说明这两个子文件属于同一个文件,相反,如果两个子文件具有不同的统一组号,则说明这两个子文件属于不同的文件。当接收端口接收到子文件时,通过识别统一组号,就可以将具有相同统一组号的子文件发送到同一个接收端,防止出现传输混乱,子文件分布在不同的接收端,最后接收端无法拼接完整的文件的问题。

另外,在此基础上,还包括:

建立用于记录统一组号和接收端的对应关系的泛型数组。

可以理解的是,建立泛型数组可以更方便记录统一组号和接收端的对应关系。

上文中对于文件传输方法的各实施例进行了详细地描述,本发明还提供一种与该方法对应的系统。由于系统部分的实施例与方法部分的实施例相互对应,因此系统部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

图4为本发明实施例提供的一种文件传输系统的结构图。如图4所示,该系统包括:

分段模块10,用于将获取到的文件进行分段得到多个子文件,其中各子文件所占用的空间均小于内存的剩余容量。

第一添加模块11,用于按照各子文件在文件中的位置分别为各子文件添加序列号。

写入模块12,用于将各子文件依次写入服务器的内存以发送到对应的接收端。

本实施例提供的文件传输系统,能够将文件进程分段,使得每个子文件所占的空间都小于内存的剩余容量,然后再将每个子文件依次写入内存以进行文件的传输。由此可见,本系统可以避免内存溢出的问题。

作为优选地实施方式,还包括:

判断模块,用于在对文件进行分段之前判断文件所占用的空间是否大于内存的剩余空间;

其中,如果是,则触发分段模块。

作为优选地实施方式,还包括:

第二添加模块,用于为各子文件添加文件对应的统一组号。

作为优选地实施方式,分段模块具体按照内存的剩余空间和当前带宽将文件分段得到多个子文件。

作为优选地实施方式,该系统还包括:

监控模块,用于持续监听接收端口,并将接收端口中接收到的子文件放入接收端,直到接收端接收到全部的子文件为止;

其中,接收端按照序列号的顺序将各子文件进行拼接以得到文件。

以上对本发明所提供的文件传输方法及系统进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

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