掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本申请涉及通信技术领域,特别涉及一种文件传输控制方法、电子设备及计算机可读存储介质。

背景技术

在嵌入式系统中,多线程数据传输相较于单线程,在执行效率方面有跨越式提升,因其效率高而得到非常广泛应用;但多线程对于单线程也有不足的方面,主要在于其分片数据的时序性,在某个线程任务的处理速度降低时,就会导致多线程传输数据时序混乱,进而导致收到的数据解析失败的情况。

目前现有的解决此类问题的方法,主要是收到报文后解析数据,根据数据索引进行数据重新排序;这种方法在数据量大的情况下,会因大量数据排序处理导致处理性能下降、速度变慢、功耗增高等问题。

鉴于此,提供一种解决上述技术问题的方案,已经是本领域技术人员所亟需关注的。

发明内容

本申请的目的在于提供一种文件传输控制方法、电子设备及计算机可读存储介质,以便有效提高文件传输效率、降低系统功耗。

为解决上述技术问题,一方面,本申请公开了一种文件传输控制方法,应用于请求端,包括:

向响应端发送文件获取请求;

与所述响应端协商数据传输参数,所述数据传输参数包括针对目标文件的分包传输参数;以便所述响应端根据所述分包传输参数将所述目标文件分成指定个数据包进行传输,且每个数据包中携带有对应的数据包索引参数以标识当前数据包的序号;并以便所述请求端将为所述目标文件分配的目标缓存区划分为指定个有序的空间块;

在接收到所述响应端发送的数据包时,将当前数据包按照其数据包索引参数缓存至对应序号的空间块中;

当所述目标文件传输完成落盘后释放缓存资源。

可选地,所述数据传输参数包括针对所述目标文件的分段传输参数、分包传输参数;以便所述响应端根据所述分段传输参数将所述目标文件分成指定个数据段以分次传输,并在每次的数据段传输中,根据所述分包传输参数将当前数据段分成指定个数据包进行传输,且每个数据包中携带有对应的数据包索引参数以标识当前数据包在当前数据段中的序号;

所述空间块的总数量与单个数据段所包括的数据包数量相等。

可选地,所述与所述响应端协商数据传输参数,包括:

在所述响应端根据所述文件获取请求查找到指定的所述目标文件后,对所述响应端所发送的所述目标文件的文件属性信息进行校验;

若校验通过,则执行与所述响应端协商数据传输参数的步骤;

若校验失败,则返回执行向响应端发送文件获取请求的步骤。

可选地,所述文件属性信息包括文件名称、文件大小。

可选地,所述分段传输参数包括分段个数、单段数据量,且M/N=NUM=SIZE;其中,M为文件大小,N为分段个数,NUM为单段数据量,SIZE为目标缓存区大小;

所述分包传输参数包括单个数据段的分包个数、单包最大数据量,且NUM/OFFSET=MAX;其中,OFFSET为分包个数,MAX为单包最大数据量;

所述数据包索引参数的取值范围为:INDEX=1,2,…,OFFSET;其中,INDEX为数据包索引参数。

可选地,在数据传输参数协商完成后,还包括:

对M/N=NUM=SIZE和NUM/OFFSET=MAX是否均成立进行校验;

若是,则继续进行文件传输;

若否,则返回执行与所述响应端协商数据传输参数的步骤。

可选地,在每次的数据段传输完成后,还包括:

判断本次数据段传输过程中实际接收的数据包总数是否为OFFSET;

若是,则判定当前数据段传输正常,并进行下一数据段的传输;

若否,则判定当前数据段传输异常,并通知所述响应端重新传输。

本申请还公开了另一种文件传输控制方法,应用于响应端,包括:

根据请求端发送的文件获取请求查找目标文件;

与所述请求端协商数据传输参数,所述数据传输参数包括针对目标文件的分包传输参数;以便根据所述分包传输参数将所述目标文件分成指定个数据包进行传输,且每个数据包中携带有对应的数据包索引参数以标识当前数据包的序号;并以便所述请求端将为所述目标文件分配的目标缓存区划分为指定个有序的空间块;

按照所述数据传输参数向所述请求端发送数据包;以便所述请求端将接收到的当前数据包按照其数据包索引参数缓存至对应序号的空间块中,并在所述目标文件传输完成落盘后释放缓存资源。

又一方面,本申请还公开了一种电子设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序以实现如上所述的任一种文件传输控制方法的步骤。

又一方面,本申请还公开了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时用以实现如上所述的任一种文件传输控制方法的步骤。

本申请所提供的文件传输控制方法应用于请求端,包括:向响应端发送文件获取请求;与所述响应端协商数据传输参数,所述数据传输参数包括针对目标文件的分包传输参数;以便所述响应端根据所述分包传输参数将所述目标文件分成指定个数据包进行传输,且每个数据包中携带有对应的数据包索引参数以标识当前数据包的序号;并以便所述请求端将为所述目标文件分配的目标缓存区划分为指定个有序的空间块;在接收到所述响应端发送的数据包时,将当前数据包按照其数据包索引参数缓存至对应序号的空间块中;当所述目标文件传输完成落盘后释放缓存资源。

本申请所提供的文件传输控制方法、电子设备及计算机可读存储介质所具有的有益效果是:本申请根据在数据的正式传输之前的参数协商结果,将一个目标文件分成若干个携带有索引信息的数据包进行传输,无需进行数据包排序,即可分别将接收到的各个数据包对号入座地依次缓存在对应序号的空间块中,不仅能够有效解决多线程文件传输等应用场景中的数据接收混乱问题,而且极大地提高了数据传输效率,降低了系统功耗与计算量。

附图说明

为了更清楚地说明现有技术和本申请实施例中的技术方案,下面将对现有技术和本申请实施例描述中需要使用的附图作简要的介绍。当然,下面有关本申请实施例的附图描述的仅仅是本申请中的一部分实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图,所获得的其他附图也属于本申请的保护范围。

图1为本申请实施例公开的一种文件传输控制方法的流程图;

图2为本申请实施例公开的又一种文件传输控制方法的流程图;

图3为本申请实施例公开的一种电子设备的结构框图。

具体实施方式

本申请的核心在于提供一种文件传输控制方法、电子设备及计算机可读存储介质,以便有效提高文件传输效率、降低系统功耗。

为了对本申请实施例中的技术方案进行更加清楚、完整地描述,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行介绍。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

在嵌入式系统中,多线程数据传输相较于单线程,在执行效率方面有跨越式提升,因其效率高而得到非常广泛应用;但多线程对于单线程也有不足的方面,主要在于其分片数据的时序性,在某个线程任务的处理速度降低时,就会导致多线程传输数据时序混乱,进而导致收到的数据解析失败的情况。

目前现有的解决此类问题的方法,主要是收到报文后解析数据,根据数据索引进行数据重新排序;这种方法在数据量大的情况下,会因大量数据排序处理导致处理性能下降、速度变慢、功耗增高等问题。鉴于此,本申请提供了一种文件传输控制方案,可有效解决上述问题。

参见图1所示,本申请实施例公开了一种文件传输控制方法,应用于请求端,主要包括:

S101:向响应端发送文件获取请求。

S102:与响应端协商数据传输参数,数据传输参数包括针对目标文件的分包传输参数;以便响应端根据分包传输参数将目标文件分成指定个数据包进行传输,且每个数据包中携带有对应的数据包索引参数以标识当前数据包的序号;并以便请求端将为目标文件分配的目标缓存区划分为指定个有序的空间块。

S103:在接收到响应端发送的数据包时,将当前数据包按照其数据包索引参数缓存至对应序号的空间块中。

S104:当目标文件传输完成落盘后释放缓存资源。

具体地,需要强调的是,本申请所提供的文件传输方法,在开启文件的数据传输之前,请求端、响应端双方先进行了参数协商以便将数据分包并添加索引,进而在数据传输过程中,双方分别按照协商的参数结果发送和接收各个数据包。

由于添加了数据包索引之后,各数据包在接收之后即可立即“对号入座”,分别存储至对应的缓存分区,而无需先耗费较多的计算资源进行数据包排序后再按照计算出来的顺序进行存储。因此,本申请极大地提高了数据传输效率,降低了系统功耗。

具体地,请求端与响应端需要进行协商的参数具体包括有分包传输参数和数据包索引参数。分包传输参数用于指定如何将一个目标文件分成若干个数据包进行传输。每个数据包在实际发送时还携带有对应的数据包索引参数,用以指明该数据包的序号。由此,接收端每接收到一个数据包后,便可根据其数据包索引参数获取该数据包的顺序信息,无需等待至其他数据包均接收完成后才进行缓存,更无需等待至所有数据包的排序计算完成。

容易理解的是,在实际传输过程中,由于不同数据包的具体情况不同,因此,同一文件的不同数据包的传输完成时间很可能是不同的。如果需要等待所有数据包传输完成并进行数据排序后再缓存数据,会极大降低数据传输效率、浪费计算资源。况且,不仅如此,实际应用中还会面临利用单个或多个线程来传输多个文件的复杂场景。因此,基于本申请中的索引机制,可极大地方便接收端快速高效有序不紊地进行数据接收缓存。

当然,为了进一步保障数据传输效率,本申请在进行数据分包时可优先采用均匀分割,即将目标文件分成若干个等大的数据包。当然,位于文件末尾位置处的最后一个数据包大小可小于其他数据包。如此,通过尽量保证各个数据包的等大,可使各数据包的传输用时尽量相同。

对于一个需要传输的目标文件,接收端还预先为该目标文件申请了一个对应大小的目标缓存区,用来存储待传输的目标文件。并且进一步地,接收端将目标缓存区划分为了多个有序的空间块,每个空间块用于存储一个数据包。因此在数据传输参数协商阶段,请求端、响应端双方所协商的分包传输参数决定了每包数据的大小,也就决定了每个空间块的大小。

当接收端将接收到的各数据包缓存至对应的空间块中后,便可以进行数据的落盘操作,将目标缓存区中的数据存储至硬盘中,并释放对目标缓存区的资源占用,使得归还的存储资源可继续用于缓存下一次传输的数据。

可见,本申请所提供的文件传输控制方法,根据在数据的正式传输之前的参数协商结果,将一个目标文件分成若干个携带有索引信息的数据包进行传输,无需进行数据包排序,即可分别将接收到的各个数据包对号入座地依次缓存在对应序号的空间块中,不仅能够有效解决多线程文件传输等应用场景中的数据接收混乱问题,而且极大地提高了数据传输效率,降低了系统功耗与计算量。

作为一种具体实施例,本申请实施例所提供的文件传输控制方法在上述内容的基础上,数据传输参数包括针对目标文件的分段传输参数、分包传输参数;以便响应端根据分段传输参数将目标文件分成指定个数据段以分次传输,并在每次的数据段传输中,根据分包传输参数将当前数据段分成指定个数据包进行传输,且每个数据包中携带有对应的数据包索引参数以标识当前数据包在当前数据段中的序号;

空间块的总数量与单个数据段所包括的数据包数量相等。

具体的,根据目标文件的大小,可选择将其先分段后分包进行传输。基于分段传输参数,可将一个目标文件分成若干个等大的数据段(最后一个数据段可例外)分别进行若干次传输,每次传输一个数据段。而在每次的数据段传输过程中,基于分包传输参数将一个数据段分成若干个数据包进行传输。

在此情况下,为节省资源占用,接收端可仅按照第一次数据段传输中需使用的空间块数量进行缓存分配,而之后的几次数据段传输可沿用为第一次数据段传输而分配的空间块。即,空间块的总数量与单个数据段所包括的数据包数量相等,而每个数据段的各数据包所携带的数据包索引,指的则是当前数据包在当前数据段总的序号。

作为一种具体实施例,本申请实施例所提供的文件传输控制方法在上述内容的基础上,与响应端协商数据传输参数,包括:

在响应端根据文件获取请求查找到指定的目标文件后,对响应端所发送的目标文件的文件属性信息进行校验;

若校验通过,则执行与响应端协商数据传输参数的步骤;

若校验失败,则返回执行向响应端发送文件获取请求的步骤。

其中,作为一种具体实施例,本申请实施例所提供的文件传输控制方法在上述内容的基础上,文件属性信息包括文件名称、文件大小。通过对文件名称、文件大小等属性信息进行校验,可进一步确认响应端所要传输的文件是否真的是接收端所需要的文件。

作为一种具体实施例,本申请实施例所提供的文件传输控制方法在上述内容的基础上,分段传输参数包括分段个数、单段数据量,且M/N=NUM=SIZE;其中,M为文件大小,N为分段个数,NUM为单段数据量,SIZE为目标缓存区大小;

分包传输参数包括单个数据段的分包个数、单包最大数据量,且NUM/OFFSET=MAX;其中,OFFSET为分包个数,MAX为单包最大数据量;

数据包索引参数的取值范围为:INDEX=1,2,…,OFFSET;其中,INDEX为数据包索引参数。

具体地,响应端根据目标文件的大小M为其分配对应大小的目标缓存区SIZE。由于可多次重复沿用第一次数据段传输所使用的各个空间块,因此,目标缓存区的大小可具体等于单段数据量大小,即SIZE=NUM=M/N。

进而再依据单包最大数据量,便可确定每段数据的分包个数,即OFFSET=NUM/MAX。由此,接收段可在缓存区中申请OFFSET个大小为MAX的空间块,这些空间块构成了对应于该目标文件的目标缓存区。

作为一种具体实施例,本申请实施例所提供的文件传输控制方法在上述内容的基础上,在数据传输参数协商完成后,还包括:

对M/N=NUM=SIZE和NUM/OFFSET=MAX是否均成立进行校验;

若是,则继续进行文件传输;

若否,则返回执行与响应端协商数据传输参数的步骤。

具体地,为了进一步确定协商出的传输参数的合理性,接收端可在协商完成后进行校验,而校验的内容可具体包括上述两个等式的成立与否。

作为一种具体实施例,本申请实施例所提供的文件传输控制方法在上述内容的基础上,在每次的数据段传输完成后,还包括:

判断本次数据段传输过程中实际接收的数据包总数是否为OFFSET;

若是,则判定当前数据段传输正常,并进行下一数据段的传输;

若否,则判定当前数据段传输异常,并通知响应端重新传输。

具体地,在每次数据段传输时,接收端会实时对当前已实际接收到的数据包进行计数,以校验其是否达到预设的单段数据的数据包总数,确保数据传输的完整性。

参见图2所示,本申请实施例还公开了另一种文件传输控制方法,应用于响应端,主要包括:

S201:根据请求端发送的文件获取请求查找目标文件。

S202:与请求端协商数据传输参数,数据传输参数包括针对目标文件的分包传输参数;以便根据分包传输参数将目标文件分成指定个数据包进行传输,且每个数据包中携带有对应的数据包索引参数以标识当前数据包的序号;并以便请求端将为目标文件分配的目标缓存区划分为指定个有序的空间块。

S203:按照数据传输参数向请求端发送数据包;以便请求端将接收到的当前数据包按照其数据包索引参数缓存至对应序号的空间块中,并在目标文件传输完成落盘后释放缓存资源。

可见,本申请所提供的文件传输控制方法,根据在数据的正式传输之前的参数协商结果,将一个目标文件分成若干个携带有索引信息的数据包进行传输,无需进行数据包排序,即可分别将接收到的各个数据包对号入座地依次缓存在对应序号的空间块中,不仅能够有效解决多线程文件传输等应用场景中的数据接收混乱问题,而且极大地提高了数据传输效率,降低了系统功耗与计算量。

参见图3所示,本申请实施例公开了一种电子设备,包括:

存储器301,用于存储计算机程序;

处理器302,用于执行所述计算机程序以实现如上所述的任一种文件传输控制方法的步骤。

进一步地,本申请实施例还公开了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时用以实现如上所述的任一种文件传输控制方法的步骤。

关于上述电子设备和计算机可读存储介质的具体内容,可参考前述关于文件传输控制方法的详细介绍,这里就不再赘述。

本申请中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的设备而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

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

以上对本申请所提供的技术方案进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请的保护范围内。

相关技术
  • 一种文件传输控制方法、设备及介质
  • 一种文件传输控制方法、装置、设备及存储介质
技术分类

06120113023141