专利名称:一种文件传输的方法及装置
专利类型:实用新型专利
专利申请号:CN202210635019.8
专利申请(专利权)人:蚂蚁区块链科技(上海)有限公司
权利人地址:上海市黄浦区外马路618号8层803室
专利发明(设计)人:焦梦洪
专利摘要:本说明书公开了一种文件传输的方法及装置,目标设备可以确定目标文件,并确定能够提供目标文件的各文件源的文件源地址,向区块链传输网络中的节点设备发送用于目标设备与各文件源之间建立直连通道的直连请求,以通过该节点设备,与至少部分文件源之间建立直连通道,并将与目标设备之间建立直连通道的文件源,作为目标文件源,以及向目标文件源发送数据获取请求,以使该目标文件源向目标设备返回该目标设备所需的目标文件中的文件分块,在目标设备需要获取到目标文件时,本方法可以从直连成功的文件源处直接获取文件分块,并且,目标设备可以同时通过多个文件源获取到多个文件分块,从而,本方法能够提高目标设备获取到目标文件的效率。
主权利要求:
1.一种文件传输的方法,所述方法应用于目标设备,包括:
目标设备确定目标文件;
确定能够提供所述目标文件的各文件源的文件源地址,所述文件源包括:已经下载所述目标文件的设备,和/或当前正在下载所述目标文件的设备;
根据所述各文件源的文件源地址,向区块链传输网络BTN中的节点设备发送用于建立所述目标设备与各文件源之间直连通道的直连请求,以使所述节点设备根据所述直连请求,解析得到所述各文件源的端口信息和所述目标设备的端口信息,并将所述各文件源的端口信息转发给所述目标设备,以及将所述目标设备的端口信息转发给所述各文件源,其中,所述端口信息包括网络端口号、IP信息;
所述目标设备根据所述各文件源的端口信息,与所述各文件源之间建立直连通道;
将与所述目标设备之间建立直连通道的文件源,作为目标文件源,并向所述目标文件源发送数据获取请求,以使所述目标文件源向所述目标设备返回所述目标文件中的文件分块。
2.如权利要求1所述的方法,还包括:
针对每个文件源,若所述目标设备与该文件源之间未建立直连通道,则所述目标设备向所述节点设备发送该文件源对应的数据获取请求,以获取到所述目标文件的文件分块。
3.如权利要求1所述的方法,所述目标设备接收各文件源标识之前,还包括:
向所述节点设备发送文件下载请求,以使所述节点设备将所述文件下载请求,转发给存储有所述目标文件的设备;
接收返回的文件元数据,并根据所述文件元数据,解析得到各文件源地址。
4.如权利要求1所述的方法,还包括:
将接收到的文件分块写入到临时文件中;
在接收到全部的文件分块后,将全部的文件分块转移到目标文件对应存储地址中进行存储。
5.一种文件传输的方法,包括:
区块链传输网络BTN中的节点设备接收目标设备发送的用于和能够提供目标文件的各文件源建立直连通道的直连请求,所述文件源包括:已经下载所述目标文件的设备,和/或当前正在下载所述目标文件的设备,所述直连请求是所述目标设备基于所述各文件源的文件源地址向所述节点设备发送的;
根据所述直连请求,解析得到所述各文件源的端口信息和所述目标设备的端口信息,并将所述各文件源的端口信息转发给所述目标设备,以及将所述目标设备的端口信息转发给所述各文件源,以使所述目标设备根据所述各文件源的端口信息,与所述各文件源之间建立直连通道,以使所述目标设备将与所述目标设备之间构建直连通道的文件源,作为目标文件源,并向所述目标文件源发送数据获取请求,以及以使所述目标文件源向所述目标设备返回所述目标设备需要的目标文件的文件分块,其中,所述端口信息包括网络端口号、IP信息。
6.如权利要求5所述的方法,还包括:
针对每个文件源,在所述目标设备与该文件源之间未建立直连通道的情况下,所述节点设备接收所述目标设备发送的数据获取请求,并根据所述数据获取请求,判断所述数据获取请求所需的文件分块是否存储在本地;
若是,将所述数据获取请求所需的文件分块返回给所述目标设备,若否,将所述数据获取请求继续转发给所述数据获取请求对应的文件源。
7.一种文件传输的装置,包括:
文件确定模块,用于所述装置确定目标文件;
地址确定模块,用于确定能够提供所述目标文件的各文件源的文件源地址,所述文件源包括:已经下载所述目标文件的设备,和/或当前正在下载所述目标文件的设备;
直连请求模块,用于根据所述各文件源的文件源地址,向区块链传输网络BTN中的节点设备发送用于所述装置与各文件源之间建立直连通道的直连请求,以使所述节点设备根据所述直连请求,解析得到所述各文件源的端口信息和所述装置的端口信息,并将所述各文件源的端口信息转发给所述装置,以及将所述装置的端口信息转发给所述各文件源,其中,所述端口信息包括网络端口号、IP信息;
所述直连请求模块,还用于所述装置根据所述各文件源的端口信息,与所述各文件源之间建立直连通道;
数据请求模块,用于将与所述装置之间建立直连通道的文件源,作为目标文件源,并向所述目标文件源发送数据获取请求,以使所述目标文件源向所述装置返回所述目标文件中的文件分块。
8.如权利要求7所述的装置,所述装置还包括:
间接获取模块,用于针对每个文件源,若所述装置与该文件源之间未建立直连通道,则所述装置向所述节点设备发送该文件源对应的数据获取请求,以获取到所述目标文件的文件分块。
9.一种文件传输的装置,包括:
接收模块,用于所述装置接收目标设备发送的用于和能够提供目标文件的各文件源建立直连通道的直连请求,所述文件源包括:已经下载所述目标文件的设备,和/或当前正在下载所述目标文件的设备,所述直连请求是所述目标设备基于所述各文件源的文件源地址向所述装置发送的,所述装置为区块链传输网络BTN中的节点设备;
构建模块,用于根据所述直连请求,解析得到所述各文件源的端口信息和所述目标设备的端口信息,并将所述各文件源的端口信息转发给所述目标设备,以及将所述目标设备的端口信息转发给所述各文件源,以使所述目标设备根据所述各文件源的端口信息,与所述各文件源之间建立直连通道,以使所述目标设备将与所述目标设备之间构建直连通道的文件源,作为目标文件源,并向所述目标文件源发送数据获取请求,以及以使所述目标文件源向所述目标设备返回所述目标文件的文件分块。
10.如权利要求9所述的装置,所述装置还包括:
查询模块,用于针对每个文件源,在所述目标设备与该文件源之间未建立直连通道的情况下,所述装置接收所述目标设备发送的数据获取请求,并根据所述数据获取请求,判断所述数据获取请求所需的文件分块是否存储在本地;若是,将所述数据获取请求所需的文件分块返回给所述目标设备,若否,将所述数据获取请求继续转发给所述数据获取请求对应的文件源。
11.一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述权利要求1~4或5~6任一项所述的方法。
12.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述权利要求1~4或5~6任一项所述的方法。 说明书 : 一种文件传输的方法及装置技术领域[0001] 本说明书涉及数据传输领域,尤其涉及一种文件传输的方法及装置。背景技术[0002] 随着互联网时代的到来,各领域通过服务器设备来配合进行业务执行已经很普遍,这其中,数据传输往往是一个必不可少的环节。[0003] 为了提高区块链业务中的数据处理效率,目前构建出了一个专门用于处理区块链业务的网络,即,区块链传输网络(BlockchainTransmissionNetwork,BTN),然而,在使用BTN进行大文件传输时,往往需要耗费较多的时间,效率较低。[0004] 所以,提高传输较大的文件的效率,则是一个亟待解决的问题。发明内容[0005] 本说明书提供一种文件传输的方法及装置,以提高设备之间进行大文件传输的效率。[0006] 本说明书采用下述技术方案:[0007] 本说明书提供了一种文件传输的方法,包括:[0008] 目标设备确定目标文件;[0009] 确定能够提供所述目标文件的各文件源的文件源地址,所述文件源包括:已经下载所述目标文件的设备,和/或当前正在下载所述目标文件的设备;[0010] 根据所述各文件源的文件源地址,向区块链传输网络BTN中的节点设备发送用于所述目标设备与各文件源之间建立直连通道的直连请求,以通过所述节点设备,与至少部分文件源之间建立直连通道;[0011] 将与所述目标设备之间建立直连通道的文件源,作为目标文件源,并向所述目标文件源发送数据获取请求,以使所述目标文件源向所述目标设备返回所述目标设备所需的目标文件中的文件分块。[0012] 可选地,根据所述各的文件源地址,向节点设备发送用于所述目标设备与各文件源之间建立直连通道的直连请求,包括:[0013] 根据所述各文件源的文件源地址,向节点设备发送用于所述目标设备与各文件源之间建立直连通道的直连请求,以使所述节点设备根据所述直连请求,解析得到所述各文件源的端口信息和所述目标设备的端口信息,并将所述各文件源的端口信息转发给所述目标设备,以及将所述目标设备的端口信息转发给所述各文件源;[0014] 所述目标设备根据所述各文件源的端口信息,与所述各文件源之间建立直连通道。[0015] 可选地,还包括:[0016] 针对每个文件源,若所述目标设备与该文件源之间未建立直连通道,则所述目标设备向所述节点设备发送该文件源对应的数据获取请求,以获取到所述目标文件的文件分块。[0017] 可选地,所述目标设备接收各文件源标识之前,还包括:[0018] 向所述节点设备发送文件下载请求,以使所述节点设备将所述文件下载请求,转发给存储有所述目标文件的设备;[0019] 接收返回的文件元数据,并根据所述文件元数据,解析得到各文件源地址。[0020] 可选地,还包括:[0021] 将接收到的文件分块写入到临时文件中;[0022] 在接收到全部的文件分块后,将全部的文件分块转移到目标文件对应存储地址中进行存储。[0023] 本说明书提供一种文件传输的方法,包括:[0024] 区块链传输网络BTN中的节点设备接收目标设备发送的用于和能够提供目标文件的各文件源建立直连通道的直连请求,所述文件源包括:已经下载所述目标文件的设备,和/或当前正在下载所述目标文件的设备,所述直连请求是所述目标设备基于所述各文件源的文件源地址向所述节点设备发送的;[0025] 根据所述直连请求,为所述目标设备与所述各文件源之间建立直连通道,以使所述目标设备将与所述目标设备之间构建直连通道的文件源,作为目标文件源,并向所述目标文件源发送数据获取请求,以及以使所述目标文件源向所述目标设备返回所述目标设备需要的目标文件的文件分块。[0026] 可选地,还包括:[0027] 接收所述目标设备发送的数据获取请求,并根据所述数据获取请求,判断所述数据获取请求所需的文件分块是否存储在本地;[0028] 若是,将所述数据获取请求所需的文件分块返回给所述目标设备,若否,将所述数据获取请求继续转发给所述数据获取请求对应的文件源。[0029] 可选地,根据所述直连请求,为所述目标设备与各文件源之间建立直连通道,包括:[0030] 根据所述直连请求,解析得到所述各文件源的端口信息和所述目标设备的端口信息,并将所述各文件源的端口信息转发给所述目标设备,以及将所述目标设备的端口信息转发给所述各文件源,以使所述目标设备根据所述各文件源的端口信息,与所述各文件源之间建立直连通道。[0031] 本说明书中提供一种文件传输的装置,包括:[0032] 文件确定模块,用于所述装置确定目标文件;[0033] 地址确定模块,用于确定能够提供所述目标文件的各文件源的文件源地址,所述文件源包括:已经下载所述目标文件的设备,和/或当前正在下载所述目标文件的设备;[0034] 直连请求模块,用于根据所述各文件源标识,向区块链传输网络BTN中的节点设备发送用于所述装置与各文件源之间建立直连通道的直连请求,以使所述节点设备分别针对每个文件源,将该文件源对应的直连请求转发给该文件源;[0035] 数据请求模块,用于将与所述装置之间建立直连通道的文件源,作为目标文件源,并向所述目标文件源发送数据获取请求,以使所述目标文件源向所述装置返回所述目标文件中的文件分块。[0036] 可选地,所述装置还包括:[0037] 间接获取模块,用于针对每个文件源,若所述装置与该文件源之间未建立直连通道,则所述装置向所述节点设备发送该文件源对应的数据获取请求,以获取到所述目标文件的文件分块。[0038] 本说明书提供一种文件传输的装置,包括:[0039] 接收模块,用于所述装置接收目标设备发送的用于和能够提供目标文件的各文件源建立直连通道的直连请求,所述文件源包括:已经下载所述目标文件的设备,和/或当前正在下载所述目标文件的设备,所述直连请求是所述目标设备基于所述各文件源的文件源地址向所述装置发送的,所述装置为区块链传输网络BTN中的节点设备;[0040] 构建模块,用于根据所述直连请求,为所述目标设备与各文件源之间建立直连通道,以使所述目标设备将与所述目标设备之间构建直连通道的文件源,作为目标文件源,并向所述目标文件源发送数据获取请求,以及以使所述目标文件源向所述目标设备返回所述目标文件的文件分块。[0041] 可选地,所述装置还包括:[0042] 查询模块,用于接收所述目标设备发送的数据获取请求,并根据所述数据获取请求,判断所述数据获取请求所需的文件分块是否存储在本地;若是,将所述数据获取请求所需的文件分块返回给所述目标设备,若否,将所述数据获取请求继续转发给所述数据获取请求对应的文件源。[0043] 可选地,所述构建模块用于,根据所述直连请求,解析得到所述各文件源的端口信息和所述目标设备的端口信息,并将所述各文件源的端口信息转发给所述目标设备,以及将所述目标设备的端口信息转发给所述各文件源,以使所述目标设备根据所述各文件源的端口信息,与所述各文件源之间建立直连通道。[0044] 本说明书提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述文件传输的方法。[0045] 本说明书提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述文件传输的方法。[0046] 本说明书采用的上述至少一个技术方案能够达到以下有益效果:[0047] 从上述文件传输的方法中可以看出,目标设备可以确定目标文件,并确定能够提供目标文件的各文件源的文件源地址,以及根据各文件源地址,向区块链传输网络中的节点设备发送用于目标设备与各文件源之间建立直连通道的直连请求,以通过该节点设备,与至少部分文件源之间建立直连通道,并将与目标设备之间建立直连通道的文件源,作为目标文件源,以及向目标文件源发送数据获取请求,以使该目标文件源向目标设备返回该目标设备所需的目标文件中的文件分块。[0048] 从上述内容中可以看出,在目标设备需要获取到目标文件时,本方法可以通过节点设备向存储有目标文件的各文件源请求直连,并从直连成功的文件源处直接获取文件分块,并且,目标设备可以同时通过多个文件源获取到多个文件分块,这样并行地获取到文件分块后,可以再将文件分块组合成目标文件,从而,本方法能够提高目标设备获取到目标文件的效率。附图说明[0049] 此处所说明的附图用来提供对本说明书的进一步理解,构成本说明书的一部分,本说明书的示意性实施例及其说明用于解释本说明书,并不构成对本说明书的不当限定。在附图中:[0050] 图1为本说明书中一种文件传输的方法的流程示意图;[0051] 图2为本说明书中一种文件传输的方法的流程示意图;[0052] 图3为本说明书中提供的一种目标设备通过各文件源获取目标文件的流程图;[0053] 图4为本说明书提供的一种文件传输的装置示意图;[0054] 图5为本说明书提供的一种文件传输的装置示意图;[0055] 图6为本说明书提供的一种对应于图1或图2的电子设备示意图。具体实施方式[0056] 为使本说明书的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。[0057] 以下结合附图,详细说明本说明书各实施例提供的技术方案。[0058] 图1为本说明书中一种文件传输的方法的流程示意图,具体包括以下步骤:[0059] S100:目标设备确定目标文件。[0060] S102:确定能够提供所述目标文件的各文件源的文件源地址,所述文件源包括:已经下载所述目标文件的设备,和/或当前正在下载所述目标文件的设备。[0061] 在实际应用中,往往有需求进行大型文件的传输,而设备间直接进行大型文件的传输,效率较低,因此,本说明书中提供一种文件传输的方法,可以通过一些方式在大型文件传输的过程中,提高传输效率。[0062] 基于此,目标设备可以确定目标文件以及确定能够提供目标文件的各文件源的文件源地址,其中,这里提到的各文件源可以包括当前正在下载目标设备需要的目标文件的设备,和/或以及下载过目标文件的设备。这里提到的目标设备以及设备的具体形式不进行限定,如目标设备(或设备)可以为服务器、电脑等设备。[0063] 而后,目标设备可以根据各文件源的文件源地址,向区块链传输网络(BlockchainTransmissionNetwork,BTN)中的节点设备发送用于目标设备与各文件源之间建立直连通道的直连请求,以使该节点设备分别针对每个文件源,将该文件源对应的直连请求转发给该文件源。[0064] 也就是说,在上述说明中,目标设备需要目标文件,而各文件源标识所对应的文件源可能存储有该目标文件,为了提高目标设备获取到目标文件的效率,目标设备可以先通过上述节点设备尝试请求与各文件源之间直连,若是能够与文件源之间进行直连,则能够提高目标设备与文件源之间的数据传输的效率。[0065] 需要说明的是,上述提到的各文件源地址可以是节点设备或者任意一个文件源主动发送给该目标设备的,也可以是该目标设备主动向节点设备或者任意一个文件源请求得到的各文件源地址。[0066] 其中,目标设备可以向节点设备发送文件下载请求,以使该节点设备将文件下载请求,转发给存储有目标文件的设备,而后,目标设备可以接收到返回的文件元数据,并根据该文件元数据,解析得到各文件源标识。[0067] 这里提到的文件元数据可以是指与目标文件相关的信息,可以用于描述该目标文件,例如,文件元数据中可以包括存储有该目标文件的各文件源的文件源地址、该目标文件的文件大小、文件摘要、文件每个文件分块的摘要、文件的唯一标签等。这里提到的文件源地址可以是指文件源的MAC地址,文件源的IP地址等,文件源地址可以用于对文件源进行标识。[0068] 还需说明的是,为了进一步地提高文件传输的效率,本说明书中,目标设备可以先判断目标文件的文件大小是否超过设定大小,若超过设定大小,再向区块链传输网络中的节点设备发送上述文件下载请求,这是因为区块链传输网络的文件传输速率较快,那么若是文件大小较大的话,则可以通过区块链传输网络(中的节点设备)获取该目标文件,若否,则可以通过其他设备获取该目标文件。[0069] S104:根据所述各文件源标识,向区块链传输网络BTN中的节点设备发送用于所述目标设备与各文件源之间建立直连通道的直连请求,以通过所述节点设备,与至少部分文件源之间建立直连通道。[0070] S106:将与所述目标设备之间建立直连通道的文件源,作为目标文件源,并向所述目标文件源发送数据获取请求,以使所述目标文件源向所述目标设备返回所述目标文件中的文件分块。[0071] 在接收到各文件源地址后,目标设备可以根据各文件源地址,向BTN中的节点设备发送用于该目标设备与各文件源之间建立直连通道的直连请求,以通过该节点设备,与至少部分文件源之间建立直连通道。其中,目标设备与文件源建立直连通道的方式可以是P2P打洞的方式。[0072] 其中,在建立直连通道时,目标设备可以根据各文件源标识,向节点设备发送用于目标设备与各文件源之间建立直连通道的直连请求,以使该节点设备根据直连请求,解析得到各文件源的端口信息和目标设备的端口信息,并将各文件源的端口信息转发给目标设备,以及将目标设备的端口信息转发给各文件源,而后,目标设备可以根据各文件源的端口信息,与各文件源之间建立直连通道。[0073] 具体的,在目标设备向节点设备发送上述直连请求后,节点设备可以不断地在目标设备和各文件源之间转发网络请求(其中,节点设备向各文件源转发的网络请求,可以是该目标设备向该节点设备发送的直连请求,也可以是其他任意形式的网络请求),以解析得到各文件源的端口信息和目标设备的端口信息。这里提到的各文件源的端口信息和目标设备的端口信息,可以用于该目标设备与各文件源之间的直连通信,其中,端口信息可以包括设备的网络端口号、IP信息等。[0074] 而后,目标设备可以将与该目标设备之间建立直连通道的文件源作为目标文件源,并向目标文件源发送数据获取请求,以使目标文件源向该目标设备返回该目标文件中的文件分块。也就是说,若不进行直连,目标设备在通过文件源获取目标文件时,则需要通过上述节点设备间接地通过文件源获取目标文件,而若是目标设备与文件源之间建立了直连通道,则目标设备可以通过直连通道直接地与文件源进行通信,将提高目标设备与文件源之间的通信效率。[0075] 然而,有可能在前面的步骤中,目标设备与各文件源中的某些文件源之间的直连通道建立失败,那么此时,目标设备也可以间接地通过节点设备与这样的文件源进行通信,以获取到所需的数据。具体的,针对每个文件源,若该目标设备与该文件源之间未建立直连通道,则目标设备可以向节点设备发送该文件源对应的数据获取请求,以获取到该目标文件的文件分块。[0076] 也就是说,对于目标设备来说,各文件源可以分为成功建立了直连通道的文件源,和未建立出直连通道的文件源,两种文件源均可以进行数据的请求,从而可以向两种文件源,同时获取所需的数据,以获取到目标文件。并且,目标设备可以一次性地从多个文件源进行目标文件的获取,因此,目标文件可以被划分为多个文件分块,目标设备可以从每个文件源处获取到若干文件分块,最终获取到所有文件分块后,可以将各文件分块组成目标文件。[0077] 例如,假设文件源A、B与目标设备之间建立了直连通道,而文件源C、D未与目标设备之间建立出直连通道,那么目标设备可以直接向文件源A、B请求,需要从文件源A、B中获取到的文件分块;以及通过节点设备间接地获取到需要从文件源C、D得到的文件分块。[0078] 需要说明的是,对于间接通过节点设备从文件源处获取文件分块的方式,由于节点设备有时会作为数据传输的中间设备,因此,在节点设备的本地磁盘或内存中可以存储有需要进行中转的数据,那么若目标设备所需的文件分块存储在节点设备中,则节点设备可以直接将文件分块返回给目标设备,不需要继续转发数据获取请求给对应的文件源。[0079] 即,节点设备接收到目标设备发送的数据获取请求后,则可以先根据该数据获取请求,判断该数据获取请求所需的文件分块是否存储在本地,若是,则可以将数据获取请求所需的文件分块返回给目标设备,若否,则可以将数据获取请求继续转发给数据获取请求对应的文件源。[0080] 上述是以目标设备为执行主体,对上述文件传输的方法进行说明,而本方法中,节点设备是不可或缺的,因此,下面将以节点设备为执行主体对上述文件传输的方法进行说明。[0081] 图2为本说明书中一种文件传输的方法的流程示意图,具体包括以下步骤:[0082] S200:区块链传输网络BTN中的节点设备接收目标设备发送的用于和能够提供目标文件的各文件源建立直连通道的直连请求,所述文件源包括:已经下载所述目标文件的设备,和/或当前正在下载所述目标文件的设备,所述直连请求是所述目标设备基于所述各文件源的文件源地址向所述节点设备发送的。[0083] S202:根据所述直连请求,为所述目标设备与所述各文件源之间建立直连通道,以使所述目标设备将与所述目标设备之间构建直连通道的文件源,作为目标文件源,并向所述目标文件源发送数据获取请求,以及以使所述目标文件源向所述目标设备返回所述目标设备需要的目标文件的文件分块。[0084] 在目标设备向BTN中的节点设备发送用于该目标设备与各文件源之间建立直连通道的直连请求后,该节点设备可以为该目标设备与各文件源之间建立直连通道,即,该目标设备可通过该目标设备与至少部分文件源之间建立直连通道。其中,直连请求中可以携带有文件源地址,以使节点设备可确定目标设备需要与哪些文件源建立直连。[0085] 而后,目标设备可以将各文件源中成功建立直连通道的文件源作为目标文件源,从而直接从该目标文件源中获取到需要从该目标文件源得到的文件分块。[0086] 由于,在以目标设备为执行主体的描述中,已经将节点设备的作用一并描述,在此就不再进行赘述了,下面将以直接一个完整的例子,来说明本说明书中的文件传输的方法,如图3所示。[0087] 图3为本说明书中提供的一种目标设备通过各文件源获取目标文件的流程图。[0088] 从图3中可以看出,目标设备需要先向节点设备发送文件下载请求,该文件下载请求可以携带有目标设备所需的目标文件的文件标识,以使该节点设备将该文件下载请求转发给一个存储有该目标文件的设备,该设备可以根据文件标识,读取本地存储的该目标文件的文件元数据返回给目标设备,该文件元数据中可以包含有各文件源的文件源地址,目标设备可以根据各文件源的文件源地址,确定用于获取该目标文件的各文件源,并向节点设备发送用于向各文件源进行直连的直连请求。[0089] 这样一来,节点设备可以在各文件源与目标设备间,为目标设备与各文件源建立直连通道,对于一个文件源来说,目标设备若是与该文件源成功直连,则可以直接向该文件源发送数据获取请求,以获取在该文件源处所需的文件分块,而若是未与该文件源成功直连,则需要先向节点设备发送数据获取请求,节点设备查询本地是否存储有该文件分块,若未存储有该文件分块需要继续向文件源请求该文件分块。另外,目标设备还可以并发地一次性向多个文件源获取不同文件分块。[0090] 其中,在文件源向节点设备返回文件分块,文件源可以按照目标文件的文件名、目标文件的文件摘要以及该文件分块的分块标识进行索引,将该文件分块在本地进行一定时长的存储。因此,目标设备发送的数据获取请求中可以携带有需要的文件分块的分块标识、目标文件的文件名、目标文件的文件摘要,从而节点设备可以先根据数据获取请求中携带的这些数据查询本地是否存储有文件分块,再进行后续的步骤,当然,文件源也可以按照这种方式将文件分块进行存储。[0091] 需要说明的是,当目标设备接收到某个文件分块后,可以先将该文件分块存储在临时文件中,直到接收到目标文件全部的文件分块后,则可以对各文件分块进行文件的完整性校验,以确定是否完整的接收到目标文件,在通过完整性校验后,则可以将临时文件中的各文件分块转移到目标文件的存储地址进行存储,并将临时文件删除,具体可以通过目标文件的文件摘要来进行完整性校验,该文件摘要可以是指目标文件的md5值。[0092] 并且,文件元数据中还可以包括每个文件分块对应的摘要信息(当然,文件分块的摘要信息也可以由目标设备向文件源进行获取),在接收到部分文件分块时,目标设备可以对这些文件分块先进行文件分块层面的校验,若是存在文件分块的校验未通过,则可以重新获取未通过校验的文件分块。[0093] 由于对所有文件分块进行完整性校验时,会耗费过多的时间,所以,目标设备可以在接收到部分文件分块时,只通过这一部分文件分块进行校验。[0094] 具体的,目标设备可以在接收到设定数量的文件分块时,对该设定数量的文件分块进行校验,例如,目标设备可以在接收每个文件分块时,记录该文件分块对应的分块标识,并将该设定数量的文件分块的分块标识发送给文件源(可以是任意文件源,也可以是发送这些文件分块的文件源,若是与文件源之间建立了直连通道则可以直接发送,若未建立则需要通过节点设备进行发送),以使该文件源返回这些文件分块的摘要信息,以对这些文件分块进行校验,再接收到设定数量的文件分块,继续对该设定数量的文件分块进行校验,并且,在接收到全部文件分块后,还可以将全部文件分块组成的文件进行完整性校验。[0095] 从上述方法中可以看出,在目标设备需要获取到目标文件时,本方法可以通过节点设备向存储有目标文件的各文件源请求直连,并从直连成功的文件源处直接获取文件分块,而对于未直连成功的文件源,也可以间接地通过节点设备转发的形式,获取到文件分块,由于该节点设备为BTN网络中的节点,进行数据转发的速度很快,并且,目标设备可以同时通过多个文件源获取到多个文件分块,这样并行地获取到文件分块后再将文件分块组合成目标文件的方式,能够提高目标设备数据获取的效率。[0096] 以上为本说明书的一个或多个实施例提供的文件传输的方法,基于同样的思路,本说明书还提供了文件传输的装置,如图4、图5所示。[0097] 图4为本说明书提供的一种文件传输的装置示意图,具体包括:[0098] 文件确定模块401,用于所述装置确定目标文件;[0099] 地址确定模块402,用于确定能够提供所述目标文件的各文件源的文件源地址,所述文件源包括:已经下载所述目标文件的设备,和/或当前正在下载所述目标文件的设备;[0100] 直连请求模块403,用于根据所述各文件源的文件源地址,向区块链传输网络BTN中的节点设备发送用于所述装置与各文件源之间建立直连通道的直连请求,以使所述节点设备分别针对每个文件源,将该文件源对应的直连请求转发给该文件源;[0101] 数据请求模块404,用于将与所述装置之间建立直连通道的文件源,作为目标文件源,并向所述目标文件源发送数据获取请求,以使所述目标文件源向所述装置返回所述目标文件中的文件分块。[0102] 可选地,所述直连请求模块403用于,根据所述各文件源的文件源地址,向节点设备发送用于所述装置与各文件源之间建立直连通道的直连请求,以使所述节点设备根据所述直连请求,解析得到所述各文件源的端口信息和所述目标设备的端口信息,并将所述各文件源的端口信息转发给所述装置,以及将所述装置的端口信息转发给所述各文件源;所述目标设备根据所述各文件源的端口信息,与所述各文件源之间建立直连通道。[0103] 可选地,所述装置还包括:[0104] 间接获取模块405,用于针对每个文件源,若所述目标设备与该文件源之间未建立直连通道,则所述装置向所述节点设备发送该文件源对应的数据获取请求,以获取到所述目标文件的文件分块。[0105] 可选地,所述装置还包括:[0106] 请求下载模块406,用于向所述节点设备发送文件下载请求,以使所述节点设备将所述文件下载请求,转发给存储有所述目标文件的设备;接收返回的文件元数据,并根据所述文件元数据,解析得到所述各文件源标识。[0107] 可选地,所述装置还包括:[0108] 转移模块407,将接收到的文件分块写入到临时文件中;在接收到全部的文件分块后,将全部的文件分块转移到目标文件对应存储地址中进行存储。[0109] 图5为本说明书提供的一种文件传输的装置示意图,具体包括:[0110] 接收模块501,用于所述装置接收目标设备发送的用于和能够提供目标文件的各文件源建立直连通道的直连请求,所述文件源包括:已经下载所述目标文件的设备,和/或当前正在下载所述目标文件的设备,所述直连请求是所述目标设备基于所述各文件源的文件源地址向所述装置发送的,所述装置为区块链传输网络BTN中的节点设备;[0111] 构建模块502,用于根据所述直连请求,为所述目标设备与各文件源之间建立直连通道,以使所述目标设备将与所述目标设备之间构建直连通道的文件源,作为目标文件源,并向所述目标文件源发送数据获取请求,以及以使所述目标文件源向所述目标设备返回所述目标文件的文件分块。[0112] 可选地,所述装置还包括:[0113] 查询模块503,用于接收所述目标设备发送的数据获取请求,并根据所述数据获取请求,判断所述数据获取请求所需的文件分块是否存储在本地;若是,将所述数据获取请求所需的文件分块返回给所述目标设备,若否,将所述数据获取请求继续转发给所述数据获取请求对应的文件源。[0114] 可选地,所述构建模块502用于,根据所述直连请求,解析得到所述各文件源的端口号和所述目标设备的端口信息,并将所述各文件源的端口信息转发给所述目标设备,以及将所述目标设备的端口号转发给所述各文件源,以使所述目标设备根据所述各文件源的端口信息,与所述各文件源之间建立直连通道。[0115] 本说明书还提供了一种计算机可读存储介质,该存储介质存储有计算机程序,计算机程序可用于执行上述文件传输的方法。[0116] 本说明书还提供了图6所示的电子设备的示意结构图。如图6所述,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,以实现上述文件传输的方法。当然,除了软件实现方式之外,本说明书并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。[0117] 在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(ProgrammableLogicDevice,PLD)(例如现场可编程门阵列(FieldProgrammableGateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logiccompiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(HardwareDescriptionLanguage,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(AdvancedBooleanExpressionLanguage)、AHDL(AlteraHardwareDescriptionLanguage)、Confluence、CUPL(CornellUniversityProgrammingLanguage)、HDCal、JHDL(JavaHardwareDescriptionLanguage)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardwareDescriptionLanguage)等,目前最普遍使用的是VHDL(Very‑High‑SpeedIntegratedCircuitHardwareDescriptionLanguage)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。[0118] 控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC625D、AtmelAT91SAM、MicrochipPIC18F26K20以及SiliconeLabsC8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。[0119] 上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。[0120] 为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。[0121] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。[0122] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。[0123] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。[0124] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。[0125] 在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。[0126] 内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。[0127] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD‑ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。[0128] 还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。[0129] 本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产品的形式。[0130] 本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。[0131] 本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。[0132] 以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。
专利地区:上海
专利申请日期:2022-06-06
专利公开日期:2024-07-26
专利公告号:CN115118712B