文件下载方法、装置及系统的制作方法

文档序号:10616098阅读:252来源:国知局
文件下载方法、装置及系统的制作方法
【专利摘要】本发明实施例提供一种文件下载方法、装置及系统,涉及计算机技术领域。其中,所述方法适用于客户端,其包括:获取下载同一文件的客户端列表;将存储在本地的所述文件中的数据进行编码,生成第一喷泉码数据,其中,所述第一喷泉码数据中包含有N个编码分组,N为大于零的整数;向所述客户端列表中请求下载所述数据的客户端发送所述N个编码分组。本发明实施例提高了数据传输的可靠性;另外因采用了喷泉码减少了信道中反馈信息的传输,有助于提高信道容量,使得网络更加健壮。
【专利说明】
文件下载方法、装置及系统
技术领域
[0001] 本发明设及计算机技术领域,尤其设及一种文件下载方法、装置及系统。
【背景技术】
[0002] 随着计算机网络技术的发展,网络形成一种从集中式系统向分布式系统发展的趋 势。P2P(peer to peer,对等网络)或P2SP(Peer to Server and Peer,点对服务器和点)网 络随之诞生,它通过直接交换方式共享计算机资源和服务。
[0003] P2P或P2SP的基本传输模式都是把文件先分成块,再按块传输直到传完文件。P2SP 除了包含P2PW外,P2SP的"S"是指服务器。P2SP有效地把原本孤立的服务器和其镜像资源 W及P2P资源整合到了一起。
[0004] 发明人在实现本发明的过程中发现:数据在客户端之间或客户端与服务器之间进 行传输时,若网络环境恶劣,很可能导致数据同步传输失败,或者需要反复重传才能最终成 功完成数据的传输。因此,在网络环境较差的情况下,P2P或P2SP网络中数据传输的可靠性 较差。

【发明内容】

[0005] 本发明实施例提供一种文件下载方法、装置及系统,用W解决现有技术中在恶劣 的网络环境下数据传输可靠性较低的问题。
[0006] 本发明实施例提供一种文件下载方法,适用于客户端,包括:
[0007] 获取下载同一文件的客户端列表;
[000引将存储在本地的所述文件中的数据进行编码,生成第一喷泉码数据,其中,所述第 一喷泉码数据中包含有N个编码分组,N为大于零的整数;
[0009] 向所述客户端列表中请求下载所述数据的客户端发送所述N个编码分组。
[0010] 可选的,上述的方法中,所述将存储在本地的所述文件中的数据进行编码,生成第 一喷泉码数据,包括:
[0011] 将存储在本地的所述文件中的数据进行分组,得到K个原始数据分组;
[0012] 对所述K个原始数据分组进行喷泉码编码,生成N个编码分组;
[0013] 其中,K为大于或等于2的整数,N为大于零的整数,所述N个编码分组构成所述第一 喷泉码数据。
[0014] 可选的,上述的方法,还包括:
[0015] 接收到所述客户端发送的反馈信息后,停止向所述客户端发送所述N个编码分组;
[0016] 其中,所述反馈信息是所述客户端在接收到预设数量的所述编码分组后发出的, 所述预设数量大于所述K。
[0017] 可选的,上述的方法,还包括:
[0018] 接收客户端发送的第二喷泉码数据;
[0019] 基于接收到的所述第二喷泉码数据中包含的M个编码分组,解码出所述第二喷泉 码数据对应的数据;
[0020] 其中,M〉M',所述r为在生成所述第二喷泉码数据过程中将数据进行分组后得到 的原始数据分组的数量,所述M'为大于或等于2的整数。
[0021] 可选的,上述的方法,还包括:
[0022] 若无法接收到所述客户端列表中的客户端发送的数据,则向服务器端发送下载请 求,所述下载请求中携带有欲下载文件标识;
[0023] 接收所述服务器端发送的所述欲下载文件标识对应的文件数据的喷泉码数据;
[0024] 基于接收到的所述文件数据的喷泉码数据中包含的S个编码分组,解码出所述欲 下载文件的文件数据;
[0025] 其中,S〉S',所述S'为在生成所述文件数据的喷泉码数据过程中将所述欲下载文 件的文件数据进行分组后得到的原始数据分组的数量,所述S'为大于或等于2的整数。 [00%] 可选的,上述的方法,还包括:
[0027] 接收所述服务器端发送的调度信息,并根据所述调度信息,向所述调度信息指定 的客户端发送所述文件数据的喷泉码数据。
[0028] 可选的,上述的方法,还包括:
[0029] 接收服务器端发送的查询请求,其中,所述查询请求中携带有欲查询文件标识;
[0030] 若本地存储有所述欲查询文件标识对应的文件数据,则将所述欲查询文件的文件 数据进行编码,生成对应的喷泉码数据;
[0031 ]向所述服务器端发送所述欲查询文件对应的喷泉码数据。
[0032] 可选的,上述的方法中,所述向所述客户端列表中请求下载所述数据的客户端发 送所述第一喷泉码数据,具体为:
[0033] 采用用户数据报协议UDP向所述客户端列表中请求下载所述数据的客户端发送所 述第一喷泉码数据。
[0034] 本发明实施例还提供一种文件下载方法,适用于服务器端,包括:
[0035] 接收客户端发送的下载请求,其中,所述下载请求中携带有所述文件的标识;
[0036] 若网络中不存在存储有所述文件标识对应的文件的客户端,且本地存储所述文件 标识对应的文件,则将所述文件中的数据进行编码,生成喷泉码数据,其中,所述喷泉码数 据中包含有N个编码分组,N为大于零的整数;
[0037] 向所述客户端发送所述N个编码分组。
[0038] 可选的,上述的方法中,所述将所述文件中的数据进行编码,生成喷泉码数据,包 括:
[0039] 将所述文件中的数据进行分组,得到K个原始数据分组;
[0040] 对所述K个原始数据分组进行喷泉码编码,生成N个编码分组;
[0041] 其中,K为大于或等于2的整数,N为大于零的整数。
[0042] 可选的,上述的方法,还包括:
[0043] 接收到所述客户端发送的反馈信息后,停止向所述客户端发送所述N个编码分组;
[0044] 其中,所述反馈信息是所述客户端在接收到预设数量的所述编码分组后发出的, 所述预设数量大于所述K。
[0045] 可选的,上述的方法,还包括:
[0046] 若网络中不存在存储有所述文件标识对应的文件的客户端,且本地未存储所述文 件标识对应的文件,则向网络中的其他客户端发送查询请求,其中,所述查询请求中携带有 所述文件的文件标识;
[0047] 若所述网络中存在有存储有所述文件的客户端,则接收所述客户端发送的喷泉码 数据;
[0048] 基于接收到的所述喷泉码数据中包含的L个编码分组,解码出所述文件的数据;
[0049] 其中,L〉K,所述K为在生成所述喷泉码数据过程中将数据进行分组后得到的原始 数据分组的数量,所述K为大于或等于2的整数。
[0050] 可选的,上述的方法中,所述向所述客户端发送所述N个编码分组,具体为:
[0051 ]采用用户数据报协议UDP向所述客户端发送所述N个编码分组。
[0052] 本发明还提供了一种文件下载装置,适用于客户端,包括:
[0053] 获取模块,用于获取下载同一文件的客户端列表;
[0054] 编码模块,用于将存储在本地的所述文件中的数据进行编码,生成第一喷泉码数 据,其中,所述第一喷泉码数据中包含有N个编码分组,N为大于零的整数;
[0055] 发送模块,用于向所述客户端列表中请求下载所述数据的客户端发送所述N个编 码分组。
[0056] 可选的,上述的文件下载装置中,所述编码模块,包括:
[0057] 分组单元,用于将存储在本地的所述文件中的数据进行分组,得到K个原始数据分 组;
[0058] 编码单元,用于对所述K个原始数据分组进行喷泉码编码,生成N个编码分组;
[0059] 其中,K为大于或等于2的整数,N为大于零的整数。
[0060] 可选的,上述的文件下载装置,还包括:
[0061] 所述发送模块,还用于在接收到所述客户端发送的反馈信息后,停止向所述客户 端发送所述N个编码分组;
[0062] 其中,所述反馈信息是所述客户端在接收到预设数量的所述编码分组后发出的, 所述预设数量大于所述K。
[0063] 可选的,上述的文件下载装置,还包括:
[0064] 第一接收模块,用于接收客户端发送的第二喷泉码数据;
[0065] 第一解码模块,用于基于接收到的所述第二喷泉码数据中包含的M个编码分组,解 码出所述第二喷泉码数据对应的数据;
[0066] 其中,M〉M',所述r为在生成所述第二喷泉码数据过程中将数据进行分组后得到 的原始数据分组的数量,所述M'为大于或等于2的整数。
[0067] 可选的,上述的文件下载装置,还包括:
[0068] 所述发送模块,还用于当无法接收到所述客户端列表中的客户端发送的数据时, 向服务器端发送下载请求,所述下载请求中携带有欲下载文件标识;
[0069] 第二接收模块,用于接收所述服务器端发送的所述欲下载文件标识对应的文件数 据的喷泉码数据;
[0070] 第二解码模块,用于基于接收到的所述文件数据的喷泉码数据中包含的S个编码 分组,解码出所述欲下载文件的文件数据;
[0071] 其中,s〉s',所述s'为在生成所述文件数据的喷泉码数据过程中将所述欲下载文 件的文件数据进行分组后得到的原始数据分组的数量,所述s'为大于或等于2的整数。
[0072] 可选的,上述的文件下载装置中,所述第二接收模块,还用于接收所述服务器端发 送的调度信息,并根据所述调度信息,向所述调度信息指定的客户端发送所述文件数据的 喷泉码数据。
[0073] 可选的,上述的文件下载装置,还包括:
[0074] 第=接收模块,用于接收服务器端发送的查询请求,其中,所述查询请求中携带有 欲查询文件标识;
[0075] 所述编码模块,还用于当本地存储有所述欲查询文件标识对应的文件数据时,将 所述欲查询文件的文件数据进行编码,生成对应的喷泉码数据;
[0076] 所述发送模块,还用于向所述服务器端发送所述欲查询文件对应的喷泉码数据。
[0077] 可选的,上述的文件下载装置中,所述发送模块,具体用于采用用户数据报协议 UDP向所述客户端列表中请求下载所述数据的客户端发送所述第一喷泉码数据。
[0078] 本发明实施例还提供了一种文件下载装置,适用于服务器端,包括:
[0079] 接收模块,用于接收客户端发送的下载请求,其中,所述下载请求中携带有所述文 件的标识;
[0080] 编码模块,用于当网络中不存在存储有所述文件标识对应的文件的客户端,且本 地存储所述文件标识对应的文件时,将所述文件中的数据进行编码,生成喷泉码数据,其 中,所述喷泉码数据中包含有N个编码分组,N为大于零的整数;
[0081] 发送模块,用于向所述客户端发送所述N个编码分组。
[0082] 可选的,上述的文件下载装置中,所述编码模块,包括:
[0083] 分组单元,用于将所述文件中的数据进行分组,得到K个原始数据分组;
[0084] 编码单元,用于对所述K个原始数据分组进行喷泉码编码,生成N个编码分组;
[0085] 其中,K为大于或等于2的整数,N为大于零的整数。
[0086] 可选的,上述的文件下载装置中,所述发送模块,还用于接收到所述客户端发送的 反馈信息后,停止向所述客户端发送所述N个编码分组;
[0087] 其中,所述反馈信息是所述客户端在接收到预设数量的所述编码分组后发出的, 所述预设数量大于所述K。
[0088] 可选的,上述的文件下载装置,还包括:
[0089] 所述发送模块,还用于当网络中不存在存储有所述文件标识对应的文件的客户 端,且本地未存储所述文件标识对应的文件时,向网络中的其他客户端发送查询请求,其 中,所述查询请求中携带有所述文件的文件标识;
[0090] 所述接收模块,还用于当所述网络中存在有存储有所述文件的客户端时,接收所 述客户端发送的喷泉码数据;
[0091] 解码模块,用于基于接收到的所述喷泉码数据中包含的L个编码分组,解码出所述 文件的数据;
[0092] 其中,L〉K,所述K为在生成所述喷泉码数据过程中将数据进行分组后得到的原始 数据分组的数量,所述K为大于或等于2的整数。
[0093] 可选的,上述的文件下载装置中,所述发送模块,具体用于采用用户数据报协议 UDP向所述客户端发送所述N个编码分组。
[0094]本发明实施例还提供的了一种文件下载系统,其特征在于,包括适用于客户端的 文件下载装置W及适用于服务器端的文件下载装置;其中,
[00M]所述适用于客户端的文件下载装置用于:
[0096] 获取下载同一文件的客户端列表;
[0097] 将存储在本地的所述文件中的数据进行编码,生成第一喷泉码数据,其中,所述第 一喷泉码数据中包含有N个编码分组,N为大于零的整数;
[0098] 向所述客户端列表中请求下载所述数据的客户端发送所述N个编码分组;
[0099] 所述适用于服务器端的文件下载装置用于:
[0100] 接收客户端发送的下载请求,其中,所述下载请求中携带有所述文件的标识;
[0101 ]若网络中不存在存储有所述文件标识对应的文件的客户端,且本地存储所述文件 标识对应的文件,则将所述文件中的数据进行编码,生成喷泉码数据,其中,所述喷泉码数 据中包含有N个编码分组,N为大于零的整数;
[0102] 向所述客户端发送所述N个编码分组。
[0103] 本发明实施例提供一种文件下载装置,适用于客户端,包括存储器W及一个或者 多个处理器,其中,文件下载装置还包括:
[0104] -个或多个单元,所述一个或多个单元被存储在所述存储器中并被配置成由所述 一个或多个处理器执行,所述一个或多个单元包括用于执行W下步骤的指令:
[0105]获取下载同一文件的客户端列表;
[0106] 将存储在本地的所述文件中的数据进行编码,生成第一喷泉码数据,其中,所述第 一喷泉码数据中包含有N个编码分组,N为大于零的整数;
[0107] 向所述客户端列表中请求下载所述数据的客户端发送所述N个编码分组。
[0108] 本发明实施例提供一种与文件下载装置结合使用的计算机程序产品,所述计算机 程序产品包括计算机可读的存储介质和内嵌于其中的计算机程序机制,所述计算机程序机 制包括执行W下步骤的指令:
[0109] 获取下载同一文件的客户端列表;
[0110] 将存储在本地的所述文件中的数据进行编码,生成第一喷泉码数据,其中,所述第 一喷泉码数据中包含有N个编码分组,N为大于零的整数;
[0111] 向所述客户端列表中请求下载所述数据的客户端发送所述N个编码分组。
[0112] 本发明实施例提供一种文件下载装置,适用于服务器端,包括存储器W及一个或 者多个处理器,其中,文件下载装置还包括:
[0113] -个或多个单元,所述一个或多个单元被存储在所述存储器中并被配置成由所述 一个或多个处理器执行,所述一个或多个单元包括用于执行W下步骤的指令:
[0114] 接收客户端发送的下载请求,其中,所述下载请求中携带有所述文件的标识;
[0115] 若网络中不存在存储有所述文件标识对应的文件的客户端,且本地存储所述文件 标识对应的文件,则将所述文件中的数据进行编码,生成喷泉码数据,其中,所述喷泉码数 据中包含有N个编码分组,N为大于零的整数;
[0116] 向所述客户端发送所述N个编码分组。
[0117] 本发明实施例提供一种与文件下载装置结合使用的计算机程序产品,所述计算机 程序产品包括计算机可读的存储介质和内嵌于其中的计算机程序机制,所述计算机程序机 制包括执行W下步骤的指令:
[0118] 接收客户端发送的下载请求,其中,所述下载请求中携带有所述文件的标识;
[0119] 若网络中不存在存储有所述文件标识对应的文件的客户端,且本地存储所述文件 标识对应的文件,则将所述文件中的数据进行编码,生成喷泉码数据,其中,所述喷泉码数 据中包含有N个编码分组,N为大于零的整数;
[0120] 向所述客户端发送所述N个编码分组。
[0121] 本发明实施例提供的文件下载方法、装置及系统,通过将待传输的目标文件的分 块数据编码成喷泉码数据,并基于喷泉码数据的特点源源不断地向请求下载的客户端发 送,直到接收到客户端发送反馈信息后停止,即便是在网络环境较差的情况下丢失部分编 码分组,因为喷泉码是源源不断发送的,接收客户端还是能继续接收并能基于接收到预设 数量的编码分组解码出对应的分块数据,显然本发明实施例提供的技术方案提高了数据传 输的可靠性;另外,由于接收客户端只有在接收到预设数量的编码分组后才发出反馈信息, 相较于现有技术中只要有一次传输失败就要反馈一次重传请求,本发明实施例因采用了喷 泉码减少了信道中反馈信息的传输,有助于提高信道容量,使得网络更加健壮。
【附图说明】
[0122] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发 明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可W根 据运些附图获得其他的附图。
[0123] 图1为本发明实施例提供的一种可选的P2SP网络架构示意图;
[0124] 图2为本发明实施例一提供的文件下载方法的流程示意图;
[0125] 图3为本发明实施例二提供的文件下载方法的流程示意图;
[0126] 图4为本发明实施例=提供的文件下载方法的流程示意图;
[0127] 图5为本发明实施例四提供的文件下载方法的流程示意图;
[0128] 图6为本发明实施例六提供的文件下载装置的结构示意图;
[0129] 图7为本发明实施例屯提供的文件下载装置的结构示意图。
【具体实施方式】
[0130] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员 在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0131] 首先结合图1介绍本发明实施例提供的文件下载方法可W适用于的应用场景。
[0132] 本发明实施例提供的所述文件下载方法可适用在P2P和P2SP网络中。其中,P2SP在 P2P的架构基础上,加入了一个数据源提供者S(Server),由运个数据源将多媒体数据分发 到网络中的某些节点,其他的一些节点可W对等网的方式从其他有数据的节点那获取多媒 体数据。节点之间的数据共享,W均等的方式进行内容分发。下面WP2SP网络为例,对本发 明提供的技术方案进行说明。
[0133] 图1为本发明实施例提供的一种可选的P2SP网络架构示意图。如图1所示,该网络 架构中包含有服务器端设备602W及多个客户端设备601,假设该网络架构中包含有A、B、C =个客户端设备,运=个客户端设备需要下载同一文件。服务器端设备存储有下载同一文 件的客户端列表,该列表中包含有客户端设备A、客户端设备B和客户端设备C的标识。具体 的,服务器端设备在接收到客户端设备发送的下载请求后,会将发送下载请求的客户端设 备的标识添加到W所述文件的标识为关键词key的客户端列表中;或者,服务器端设备根据 所述下载请求中携带的文件的标识,获取该文件的属性计算出文件的文件指纹,并将发送 下载请求的客户端设备的标识添加到W所述文件的指纹作为关键词key的客户端列表中。 其中,文件的属性包含但不限于:UI?L(Unifo;rm Resource Locator,统一资源定位符),BT (BitTorrent,比特洪流)种子文件,ed2k(eDonkey2000network,电驴2000网络)链接等。客 户端设备A、客户端设备B和客户端设备C在获取到客户端列表后,运=个客户端设备即可实 现节点之间的数据共享,W均等的方式进行数据的分发,相互之间进行数据的交换,最终均 达到下载完成目标文件的目的。
[0134] 假设目标文件被分成3个分块数据,客户端设备A存储有目标文件的分块数据1、客 户端设备B存储有目标文件的分块数据2、客户端设备C存储有目标文件的分块数据3。客户 端设备A可将分块数据1进行编码,生成喷泉码数据;然后持续向客户端列表中的请求下载 目标文件的客户端设备B和客户端设备C分发分块数据1的喷泉码数据中的多个编码分组。 同样的,客户端设备B可将本地分块数据2进行喷泉码编码然后向客户端设备A和客户端设 备C进行分发;客户端设备C可将本地分块数据3进行喷泉码编码然后向客户端设备A和客户 端设备B进行分发。
[0135] 运里需要说明的是:若网络中不存在存储有目标文件的客户端设备或因某些原因 无法获取到其他客户端设备发送的数据,则客户端设备可向服务器端设备发送下载请求, 服务器端设备此时相当于网络中的一个客户端设备向请求下载目标文件的客户端设备分 发分块数据。同样的,若服务器端设备接收到客户端设备发送的下载目标文件的下载请求 后,查询本地无该目标文件时,服务器端设备也可向网络中其他客户端设备发送查询请求。 如果网络中存在客户端设备有此文件,那么此时服务器端设备同普通的客户端设备一样从 存储有目标文件的客户端设备处获取文件分块信息及分块数据,并将获取到的文件分块信 息及分块数据返回给请求下载的客户端设备。如果当服务器端设备在全P2SP网络中都没有 查询到目标文件,那么服务器端设备将根据提交请求的客户端设备所提交的信息,到其他 网络,如BT、ed2k等网络中,获取资源。如果服务器端设备在其他网络中还是没有查询到结 果,那么将向请求的客户端设备发出无法获取该资源,由客户端设备根据目标文件的属性 自行下载此文件。
[0136] 实施例一
[0137] 图2示出了本发明实施例一提供的文件下载方法的流程示意图。本实施例提供的 所述方法可适用于客户端。本实施例提供的所述方法的执行主体可W是文件下载装置,所 述文件下载装置可W是安装在客户端设备上的硬件实体或应用程序。如图2所示,本实施例 一提供的所述方法,包括:
[0138] 步骤101、获取下载同一文件的客户端列表。
[0139] 具体的,本步骤可采用如下方法实现:
[0140] 步骤S11、向服务器端发送下载所述文件的下载请求。
[0141] 步骤S12、接收所述服务器端反馈的W所述文件的标识为关键词key的客户端列 表。
[0142] 在P2SP网络中,若服务器端设备本地存储有所述文件标识对应的文件,则所述服 务器端设备在接收到所述下载请求后,首先会根据所述文件的标识获取所述文件的属性, 并根据所述属性计算所述第一目标文件的指纹。其中,指纹的生成方式可W参考现有方式 实现,本实施例不寶述。文件的属性包含但不限于:m?L,BT种子文件,ed2k链接等。然后,若 服务器端设备查询到本地已创建有W所述指纹为关键词key的客户端列表,则所述客户端 的标识添加到所述客户端列表中;若服务器端设备查询本地无W所述指纹为key的客户端 列表,则创建W所述指纹为key的客户端列表,并将所述客户端的标识添加到所述客户端列 表中。最后向所述客户端反馈W所述指纹为key的客户端列表。
[0143] 步骤102、将存储在本地的所述文件中的数据进行编码,生成第一喷泉码数据,其 中,所述第一喷泉码数据中包含有N个编码分组,N为大于零的整数。
[0144] 在具体实施时,本步骤可采用如下方法实现:
[0145] 首先,将存储在本地的所述文件中的数据进行分组,得到K个原始数据分组。
[0146] 然后,对所述K个原始数据分组进行喷泉码编码,生成N个编码分组。
[0147] 其中,K为大于或等于2的整数,N为大于零的整数。
[0148] 实际应用中,该喷泉码可W是LT码,也可W是Raptor码。
[0149] 所谓的喷泉码,就是指使用该种编码可W由k个原始数据分组生成任意数量的编 码分组,而只要知道其中任意n(n>k)个编码分组,即可通过译码成功恢复出全部原始数据 分组。
[0150] 本实施例中,假设接收到的数据单元的长度为L比特,将长度为L比特的数据单元 分割成k =「£八1个输入原始数据分组,则每个输入原始数据分组的长为1。
[0151] 定义:度d表示喷泉码编码过程中每次选取原始数据分组的个数。
[0152] 喷泉码编码生成一个编码分组的具体过程如下:
[0153] 1)随机(伪随机)选择一个度d;
[0154] 2)从所有的原始数据分组中随机(伪随机)选取d个不同的输入数据分组;
[01W] 3)将运d个不同输入数据分组模二和,生成一个编码分组。
[0156] 假设已知n个编码分组,每个编码分组代表一个有k个未知输入的线性方程。则整 个译码过程可W看作是n个方程联合求解k个未知数的线性方程组GXX = N,其中G是生成矩 阵,大小为nXk,X为kXl的待求解原始数据分组向量,N为nXl的编码分组向量。当生成矩 阵G列满秩即G的秩为k时,待求解原始数据分组X有唯一确定解。
[0157] 步骤103、向所述客户端列表中请求下载所述数据的客户端发送所述N个编码分 组。
[015引在具体实施时,可采用UDP(Use;r化tagram Protocol,用户数据报协议)协议向所 述客户端列表中请求下载所述数据的客户端发送所述N个编码分组。本发明实施例采用UDP 协议可W减少传输过程中的协议数据的传输量,即便存在数据丢包在喷泉码的编码保证下 也能顺利的、安全的还原数据。
[0159] 运里需要补充的是:在实际应用中,喷泉码的发送端随机编码,由k个原始分组生 成任意数量的编码分组,发送端在不知道运些数据包是否被成功接收的情况下,持续发送 数据包。而接收端只要收到k(l+〇个编码分组的任意子集,即收到一个稍微大于原来k值得 N,就可通过译码W高概率(和e有关)成功地恢复全部原始分组。
[0160] 下面运个比喻形象地解释了运个过程。
[0161] 单个源节点S如同源源不断产生水滴(编码分组)的喷泉,不停地向周围的多个桶K (表示多个接收端的缓存)发送"水滴"(表示数据包),当一个桶里的水满了 W后(缓存满), 它才向源节点发送一个反馈。每次发送的水滴是一帖里面随机选择的一些包组合起来的 包,运种组合可W是线性的,也可W是非线性的,随机选择保证了每次发送的信息对接收节 点是有用的。桶在装满水之后(接收足够数量的水滴),即可达到饮用(成功译码)的目的,而 不必关屯、具体是哪一滴水(编码分组)流入桶中。当源节点收到所有桶的ACKW后,再发送新 的一帖,否则继续发送组合包。
[0162] 本发明实施例提供的技术方案,通过将待传输的目标文件的分块数据编码成喷泉 码数据,并基于喷泉码数据的特点源源不断地向请求下载的客户端发送,直到接收到客户 端发送反馈信息后停止,即便是在网络环境较差的情况下丢失部分编码分组,因为喷泉码 是源源不断发送的,接收客户端还是能继续接收并能基于接收到预设数量的编码分组解码 出对应的分块数据,显然本发明实施例提供的技术方案提高了数据传输的可靠性;另外,由 于接收客户端只有在接收到预设数量的编码分组后才发出反馈信息,相较于现有技术中只 要有一次传输失败就要反馈一次重传请求,本发明实施例因采用了喷泉码减少了信道中反 馈信息的传输,有助于提高信道容量,使得网络更加健壮。
[0163] 实施例二
[0164] 图3示出了本发明实施例一提供的文件下载方法的流程示意图。本实施例提供的 所述方法可适用于客户端。本实施例提供的所述方法的执行主体可W是文件下载装置,所 述文件下载装置可W是安装在客户端设备上的硬件实体或应用程序。如图3所示,本实施例 二提供的所述方法,包括:
[0165] 步骤201、获取下载同一文件的客户端列表。
[0166] 步骤202、将存储在本地的所述文件中的数据进行编码,生成第一喷泉码数据,其 中,所述第一喷泉码数据中包含有N个编码分组,N为大于零的整数。
[0167] 具体的编码过程可参见上述实施例一中的相应部分的内容,此处不再寶述。
[0168] 步骤203、向所述客户端列表中请求下载所述数据的客户端发送所述N个编码分 组。
[0169] 步骤204、接收到所述客户端发送的反馈信息后,停止向所述客户端发送所述N个 编码分组。
[0170] 其中,所述反馈信息是所述客户端在接收到预设数量的所述编码分组后发出的, 所述预设数量大于所述K。在具体实施时,所述预设数量可W等于K(l+〇,e为预设的译码开 销。译码开销可人为设定,当然译码开销越大,基于接收到的编码分组恢复出全部原始分组 的概率也就越大。在具体实施时,技术人员可根据多次试验找到较为合适的译码开销值。
[0171] 步骤205、接收客户端发送的第二喷泉码数据。
[0172] 步骤206、基于接收到的所述第二喷泉码数据中包含的M个编码分组,解码出所述 第二喷泉码数据对应的数据。
[0173] 其中,M〉M',所述r为在生成所述第二喷泉码数据过程中将数据进行分组后得到 的原始数据分组的数量,所述M'为大于或等于2的整数。具体实施时,M可W等于r (1 + 0,e 为预设的译码开销。译码开销可人为设定,当然译码开销越大,基于接收到的编码分组恢复 出全部原始分组的概率也就越大。在具体实施时,技术人员可根据多次试验找到较为合适 的译码开销值。
[0174] 步骤207、若无法接收到所述客户端列表中的客户端发送的数据,则向服务器端发 送下载请求,所述下载请求中携带有欲下载文件标识。
[0175] 在实际应用中,客户端无法接收到所述客户端列表中的客户端发送的数据的情况 可能有如下几种情况:
[0176] 情况1,客户端与客户端列表中的所有客户端均建立连接失败。
[0177] 情况2,客户端与客户端列表中的所有客户端中的至少一个客户端成功建立了连 接,但无法接收到所述成功建立连接的客户端发送的数据。
[0178] 步骤208、接收所述服务器端发送的所述欲下载文件标识对应的文件数据的喷泉 码数据。
[0179] 步骤209、基于接收到的所述文件数据的喷泉码数据中包含的S个编码分组,解码 出所述欲下载文件的文件数据。
[0180] 其中,S〉S',所述S'为在生成所述文件数据的喷泉码数据过程中将所述欲下载文 件的文件数据进行分组后得到的原始数据分组的数量,所述S'为大于或等于2的整数。同样 的,在具体实施时,S可W等于S'(1+0, e为预设的译码开销。译码开销可人为设定,当然译 码开销越大,基于接收到的编码分组恢复出全部原始分组的概率也就越大。在具体实施时, 技术人员可根据多次试验找到较为合适的译码开销值。
[0181] 步骤210、接收所述服务器端发送的调度信息,并根据所述调度信息,向所述调度 信息指定的客户端发送所述文件数据的喷泉码数据。
[0182] 步骤211、接收服务器端发送的查询请求,其中,所述查询请求中携带有欲查询文 件标识。
[0183] 步骤212、若本地存储有所述欲查询文件标识对应的文件数据,则将所述欲查询文 件的文件数据进行编码,生成对应的喷泉码数据。
[0184] 步骤213、向所述服务器端发送所述欲查询文件对应的喷泉码数据。
[0185] 本发明实施例提供的技术方案,通过将待传输的目标文件的分块数据编码成喷泉 码数据,并基于喷泉码数据的特点源源不断地向请求下载的客户端发送,直到接收到客户 端发送反馈信息后停止,即便是在网络环境较差的情况下丢失部分编码分组,因为喷泉码 是源源不断发送的,接收客户端还是能继续接收并能基于接收到预设数量的编码分组解码 出对应的分块数据,显然本发明实施例提供的技术方案提高了数据传输的可靠性;另外,由 于接收客户端只有在接收到预设数量的编码分组后才发出反馈信息,相较于现有技术中只 要有一次传输失败就要反馈一次重传请求,本发明实施例因采用了喷泉码减少了信道中反 馈信息的传输,有助于提高信道容量,使得网络更加健壮。
[0186] 实施例S
[0187] 图4示出了本发明实施例=提供的文件下载方法的流程示意图。本实施例提供的 所述方法可适用于服务器端。本实施例提供的所述方法的执行主体可W是文件下载装置, 该文件下载装置可W是安装在服务器端设备上的硬件实体或应用程序。如图4所示,本实施 例=提供的所述方法,包括:
[0188] 步骤301、接收客户端发送的下载请求,其中,所述下载请求中携带有所述文件的 标识。
[0189] 在具体实施时,所述下载请求可W是所述客户端在无法从网络中其他客户端(如 下载所述文件的客户端列表中的客户端)中下载到所述标识对应的文件情况下发送的,当 然也可W是所述客户端直接发送的。
[0190] 在实际应用中,客户端无法接收到所述客户端列表中的客户端发送的数据的情况 可能有如下几种情况:
[0191] 情况1,客户端与客户端列表中的所有客户端均建立连接失败。
[0192] 情况2,客户端与客户端列表中的所有客户端中的至少一个客户端成功建立了连 接,但无法接收到所述成功建立连接的客户端发送的数据。
[0193] 步骤302、若网络中不存在存储有所述文件标识对应的文件的客户端,且本地存储 所述文件标识对应的文件,则将所述文件中的数据进行编码,生成喷泉码数据,其中,所述 喷泉码数据中包含有N个编码分组,N为大于零的整数。
[0194] 具体的,本步骤可采用如下方法实现:
[01M]首先,将所述文件中的数据进行分组,得到K个原始数据分组。
[0196] 然后,对所述K个原始数据分组进行喷泉码编码,生成N个编码分组。
[0197] 其中,K为大于或等于2的整数,N为大于零的整数。
[0198] 步骤303、向所述客户端发送所述N个编码分组。
[0199] 本发明实施例提供的技术方案,通过将待传输的目标文件的分块数据编码成喷泉 码数据,并基于喷泉码数据的特点源源不断地向请求下载的客户端发送,直到接收到客户 端发送反馈信息后停止,即便是在网络环境较差的情况下丢失部分编码分组,因为喷泉码 是源源不断发送的,接收客户端还是能继续接收并能基于接收到预设数量的编码分组解码 出对应的分块数据,显然本发明实施例提供的技术方案提高了数据传输的可靠性;另外,由 于接收客户端只有在接收到预设数量的编码分组后才发出反馈信息,相较于现有技术中只 要有一次传输失败就要反馈一次重传请求,本发明实施例因采用了喷泉码减少了信道中反 馈信息的传输,有助于提高信道容量,使得网络更加健壮。
[0200] 实施例四
[0201] 图5示出了本发明实施例四提供的文件下载方法的流程示意图。本实施例提供的 所述方法可适用于服务器端。本实施例提供的所述方法的执行主体可W是文件下载装置, 该文件下载装置可W是安装在服务器端设备上的硬件实体或应用程序。如图5所示,本实施 例四提供的所述方法,包括:
[0202] 步骤401、接收客户端发送的下载请求,其中,所述下载请求中携带有所述文件的 标识。
[0203] 步骤402、若网络中不存在存储有所述文件标识对应的文件的客户端,且本地存储 所述文件标识对应的文件,则将所述文件中的数据进行编码,生成喷泉码数据,其中,所述 喷泉码数据中包含有N个编码分组,N为大于零的整数。
[0204] 步骤403、向所述客户端发送所述N个编码分组。
[0205] 运里需要说明的是:可采用UDP协议向所述客户端发送所述N个编码分组,采用UDP 协议可W减少传输过程中的协议数据的传输量,即便存在数据丢包在喷泉码的编码保证下 也能顺利的、安全的还原数据。
[0206] 步骤404、接收到所述客户端发送的反馈信息后,停止向所述客户端发送所述N个 编码分组。
[0207] 其中,所述反馈信息是所述客户端在接收到预设数量的所述编码分组后发出的, 所述预设数量大于所述K。在具体实施时,所述预设数量可W等于K(l+〇,e为预设的译码开 销。译码开销可人为设定,当然译码开销越大,基于接收到的编码分组恢复出全部原始分组 的概率也就越大。在具体实施时,技术人员可根据多次试验找到较为合适的译码开销值。 [020引步骤405、若网络中不存在存储有所述文件标识对应的文件的客户端,且本地未存 储所述文件标识对应的文件,则向网络中的其他客户端发送查询请求,其中,所述查询请求 中携带有所述文件的文件标识。
[0209] 步骤406、若所述网络中存在有存储有所述文件的客户端,则接收所述客户端发送 的喷泉码数据。
[0210] 运里需要说明的是所述网络可W包括P2SP网络、BT网络,ed2k网络等中的一种网 络或任意多种网络。
[0211] 步骤407、基于接收到的所述喷泉码数据中包含的L个编码分组,解码出所述文件 的数据。
[0212] 其中,L〉K,所述K为在生成所述喷泉码数据过程中将数据进行分组后得到的原始 数据分组的数量,所述K为大于或等于2的整数。所述L可W等于K(l + 0,e为预设的译码开 销。译码开销可人为设定,当然译码开销越大,基于接收到的编码分组恢复出全部原始分组 的概率也就越大。在具体实施时,技术人员可根据多次试验找到较为合适的译码开销值。
[0213] 步骤408、若所述网络中不存在有存储有所述文件的客户端,则向所述客户端发出 无法获取所述文件的提示信息。
[0214] 本发明实施例提供的技术方案,通过将待传输的目标文件的分块数据编码成喷泉 码数据,并基于喷泉码数据的特点源源不断地向请求下载的客户端发送,直到接收到客户 端发送反馈信息后停止,即便是在网络环境较差的情况下丢失部分编码分组,因为喷泉码 是源源不断发送的,接收客户端还是能继续接收并能基于接收到预设数量的编码分组解码 出对应的分块数据,显然本发明实施例提供的技术方案提高了数据传输的可靠性;另外,由 于接收客户端只有在接收到预设数量的编码分组后才发出反馈信息,相较于现有技术中只 要有一次传输失败就要反馈一次重传请求,本发明实施例因采用了喷泉码减少了信道中反 馈信息的传输,有助于提高信道容量,使得网络更加健壮。
[0215] 需要说明的是:对于前述的各方法实施例,为了简单描述,故将其都表述为一系列 的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为 依据本发明,某些步骤可W采用其他顺序或者同时进行。其次,本领域技术人员也应该知 悉,说明书中所描述的实施例均属于优选实施例,所设及的动作和模块并不一定是本发明 所必须的。
[0216] 实施五
[0217] 如图6示出了本发明实施例五提供的文件下载装置的结构示意图。为了便于说明, 仅示出了与本发明实施例相关的部分,具体技术细节未掲示的,请参照本发明实施例方法 部分。该文件下载装置可W是安装在客户端设备上的硬件实体或应用程序。其中,所述客户 端设备可W是:计算机、笔记本计算机、手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)、P0S^oint of Sales,销售终端)、车载电脑等任意终端设备。 如图6所示,本实施例五提供的所述文件下载装置,包括:获取模块501、编码模块502及发送 模块503。其中,
[0218] 获取模块501用于获取下载同一文件的客户端列表;
[0219] 编码模块502用于将存储在本地的所述文件中的数据进行编码,生成第一喷泉码 数据,其中,所述第一喷泉码数据中包含有N个编码分组,N为大于零的整数;
[0220] 发送模块503用于向所述客户端列表中请求下载所述数据的客户端发送所述N个 编码分组。
[0221] 本发明实施例提供的技术方案,通过将待传输的目标文件的分块数据编码成喷泉 码数据,并基于喷泉码数据的特点源源不断地向请求下载的客户端发送,直到接收到客户 端发送反馈信息后停止,即便是在网络环境较差的情况下丢失部分编码分组,因为喷泉码 是源源不断发送的,接收客户端还是能继续接收并能基于接收到预设数量的编码分组解码 出对应的分块数据,显然本发明实施例提供的技术方案提高了数据传输的可靠性;另外,由 于接收客户端只有在接收到预设数量的编码分组后才发出反馈信息,相较于现有技术中只 要有一次传输失败就要反馈一次重传请求,本发明实施例因采用了喷泉码减少了信道中反 馈信息的传输,有助于提高信道容量,使得网络更加健壮。
[0222] 运里需要说明的是:本实施例提供的所述文件下载装置可实现上述实施例一或实 施例二中所提供的文件下载方法,具体的实现细节可参见上述内容,此处不再寶述。
[022;3]实施六
[0224] 本发明实施例六基于上述实施例五提供的文件下载装置对本发明提供的技术方 案进行进一步的说明。为了便于描述,仅示出了与本发明实施例相关的部分,具体技术细节 未掲示的,请参照本发明实施例方法部分。该文件下载装置可W是安装在客户端设备上的 硬件实体或应用程序。其中所述客户端设备可W是:计算机、笔记本计算机、手机、平板电 脑、PDA(Personal Digital Assistant,个人数字助理)、P0S(F*oint of Sales,销售终端)、 车载电脑等任意终端设备。本实施例六基于所述实施例五,提供的所述文件下载装置中,所 述编码模块可采用如下方法实现。具体的,所述编码模块包括:分组单元和编码单元。其中, 分组单元用于将存储在本地的所述文件中的数据进行分组,得到K个原始数据分组。编码单 元用于对所述K个原始数据分组进行喷泉码编码,生成N个编码分组。其中,K为大于或等于2 的整数,N为大于零的整数。
[0225] 进一步的,所述的发送模块还可用于在接收到所述客户端发送的反馈信息后,停 止向所述客户端发送所述N个编码分组;其中,所述反馈信息是所述客户端在接收到预设数 量的所述编码分组后发出的,所述预设数量大于所述K。
[0226] 进一步的,所述文件下载装置还可包括:第一接收模块和第一解码模块。其中,第 一接收模块,用于接收客户端发送的第二喷泉码数据;第一解码模块,用于基于接收到的所 述第二喷泉码数据中包含的M个编码分组,解码出所述第二喷泉码数据对应的数据;其中,M 〉M',所述r为在生成所述第二喷泉码数据过程中将数据进行分组后得到的原始数据分组 的数量,所述M'为大于或等于2的整数。
[0227] 进一步的,所述文件下载装置还可包括:
[0228] 所述发送模块,还用于当无法接收到所述客户端列表中的客户端发送的数据时, 向服务器端发送下载请求,所述下载请求中携带有欲下载文件标识;
[0229] 第二接收模块,用于接收所述服务器端发送的所述欲下载文件标识对应的文件数 据的喷泉码数据;
[0230] 第二解码模块,用于基于接收到的所述文件数据的喷泉码数据中包含的S个编码 分组,解码出所述欲下载文件的文件数据;
[0231] 其中,S〉S',所述S'为在生成所述文件数据的喷泉码数据过程中将所述欲下载文 件的文件数据进行分组后得到的原始数据分组的数量,所述S'为大于或等于2的整数。
[0232] 进一步的,所述第二接收模块,还用于接收所述服务器端发送的调度信息,并根据 所述调度信息,向所述调度信息指定的客户端发送所述文件数据的喷泉码数据。
[0233] 进一步的,所述文件下载装置还可包括:第=接收模块,用于接收服务器端发送的 查询请求,其中,所述查询请求中携带有欲查询文件标识;
[0234] 所述编码模块,还用于当本地存储有所述欲查询文件标识对应的文件数据时,将 所述欲查询文件的文件数据进行编码,生成对应的喷泉码数据;
[0235] 所述发送模块,还用于向所述服务器端发送所述欲查询文件对应的喷泉码数据。
[0236] 发送模块,用于采用用户数据报协议UDP向所述客户端列表中请求下载所述数据 的客户端发送所述第一喷泉码数据。
[0237] 本发明实施例提供的技术方案,通过将待传输的目标文件的分块数据编码成喷泉 码数据,并基于喷泉码数据的特点源源不断地向请求下载的客户端发送,直到接收到客户 端发送反馈信息后停止,即便是在网络环境较差的情况下丢失部分编码分组,因为喷泉码 是源源不断发送的,接收客户端还是能继续接收并能基于接收到预设数量的编码分组解码 出对应的分块数据,显然本发明实施例提供的技术方案提高了数据传输的可靠性;另外,由 于接收客户端只有在接收到预设数量的编码分组后才发出反馈信息,相较于现有技术中只 要有一次传输失败就要反馈一次重传请求,本发明实施例因采用了喷泉码减少了信道中反 馈信息的传输,有助于提高信道容量,使得网络更加健壮。
[0238] 运里需要说明的是:本实施例提供的所述文件下载装置可实现上述实施例一或实 施例二中所提供的文件下载方法,具体的实现细节可参见上述内容,此处不再寶述。
[0239] 实施屯
[0240] 如图7示出了本发明实施例屯提供的文件下载装置的结构示意图。如图7所示,本 实施例屯提供的所述文件下载装置,包括:接收模块701、编码模块702和发送模块703。其 中,
[0241] 接收模块701用于接收客户端发送的下载请求,其中,所述下载请求中携带有所述 文件的标识;
[0242] 编码模块702用于当网络中不存在存储有所述文件标识对应的文件的客户端,且 本地存储所述文件标识对应的文件时,将所述文件中的数据进行编码,生成喷泉码数据,其 中,所述喷泉码数据中包含有N个编码分组,N为大于零的整数;
[0243] 发送模块703用于向所述客户端发送所述N个编码分组。
[0244] 本发明实施例提供的技术方案,通过将待传输的目标文件的分块数据编码成喷泉 码数据,并基于喷泉码数据的特点源源不断地向请求下载的客户端发送,直到接收到客户 端发送反馈信息后停止,即便是在网络环境较差的情况下丢失部分编码分组,因为喷泉码 是源源不断发送的,接收客户端还是能继续接收并能基于接收到预设数量的编码分组解码 出对应的分块数据,显然本发明实施例提供的技术方案提高了数据传输的可靠性;另外,由 于接收客户端只有在接收到预设数量的编码分组后才发出反馈信息,相较于现有技术中只 要有一次传输失败就要反馈一次重传请求,本发明实施例因采用了喷泉码减少了信道中反 馈信息的传输,有助于提高信道容量,使得网络更加健壮。
[0245] 运里需要说明的是:本实施例提供的所述文件下载装置可实现上述实施例=或实 施例四中所提供的文件下载方法,具体的实现细节可参见上述内容,此处不再寶述。
[0246] 实施八
[0247] 本发明实施例八基于上述实施例屯提供的文件下载装置对本发明提供的技术方 案进行进一步的说明。本实施例八基于所述实施例屯,提供的所述文件下载装置中,所述编 码模块可采用如下方法实现。具体的,所述编码模块包括:分组单元和编码单元。其中,分组 单元用于将所述文件中的数据进行分组,得到K个原始数据分组;编码单元用于对所述K个 原始数据分组进行喷泉码编码,生成N个编码分组;其中,K为大于或等于2的整数,N为大于 零的整数。
[0248] 进一步的,所述发送模块,还用于接收到所述客户端发送的反馈信息后,停止向所 述客户端发送所述N个编码分组;其中,所述反馈信息是所述客户端在接收到预设数量的所 述编码分组后发出的,所述预设数量大于所述K。
[0249] 进一步的,本实施例提供所述的文件下载装置,还包括:
[0250] 所述发送模块,还用于当网络中不存在存储有所述文件标识对应的文件的客户 端,且本地未存储所述文件标识对应的文件时,向网络中的其他客户端发送查询请求,其 中,所述查询请求中携带有所述文件的文件标识;
[0251] 所述接收模块,还用于当所述网络中存在有存储有所述文件的客户端时,接收所 述客户端发送的喷泉码数据;
[0252] 解码模块,用于基于接收到的所述喷泉码数据中包含的L个编码分组,解码出所述 文件的数据;
[0253] 其中,L〉K,所述K为在生成所述喷泉码数据过程中将数据进行分组后得到的原始 数据分组的数量,所述K为大于或等于2的整数。
[0254] 进一步的,本实施例提供的所述文件下载装置中,所述发送模块,具体用于采用用 户数据报协议UDP向所述客户端发送所述N个编码分组。
[0255] 本发明实施例提供的技术方案,通过将待传输的目标文件的分块数据编码成喷泉 码数据,并基于喷泉码数据的特点源源不断地向请求下载的客户端发送,直到接收到客户 端发送反馈信息后停止,即便是在网络环境较差的情况下丢失部分编码分组,因为喷泉码 是源源不断发送的,接收客户端还是能继续接收并能基于接收到预设数量的编码分组解码 出对应的分块数据,显然本发明实施例提供的技术方案提高了数据传输的可靠性;另外,由 于接收客户端只有在接收到预设数量的编码分组后才发出反馈信息,相较于现有技术中只 要有一次传输失败就要反馈一次重传请求,本发明实施例因采用了喷泉码减少了信道中反 馈信息的传输,有助于提高信道容量,使得网络更加健壮。
[0256] 运里需要说明的是:本实施例提供的所述文件下载装置可实现上述实施例=或实 施例四中所提供的文件下载方法,具体的实现细节可参见上述内容,此处不再寶述。
[0257] 实施例九
[0258] 如图1所示,本发明实施例九提供的一种网络系统包括适用于客户端的文件下载 装置W及适用于服务器端的文件下载装置;其中,
[0259] 所述适用于客户端的文件下载装置用于:
[0260] 获取下载同一文件的客户端列表;
[0261 ]将存储在本地的所述文件中的数据进行编码,生成第一喷泉码数据,其中,所述第 一喷泉码数据中包含有N个编码分组,N为大于零的整数;
[0262] 向所述客户端列表中请求下载所述数据的客户端发送所述N个编码分组;
[0263] 所述适用于服务器端的文件下载装置用于:
[0264] 接收客户端发送的下载请求,其中,所述下载请求中携带有所述文件的标识;
[0265] 若本地存储所述文件标识对应的文件,则将所述文件中的数据进行编码,生成喷 泉码数据,其中,所述喷泉码数据中包含有N个编码分组,N为大于零的整数;
[0266] 向所述客户端发送所述N个编码分组。
[0267] 其中,所述适用于客户端的文件下载装置可W是安装在客户端设备上的硬件实体 或应用程序,所述适用于服务器端的文件下载装置可W是安装在服务器端设备上的硬件实 体或应用程序。
[0268] 本发明实施例提供的技术方案,通过将待传输的目标文件的分块数据编码成喷泉 码数据,并基于喷泉码数据的特点源源不断地向请求下载的客户端发送,直到接收到客户 端发送反馈信息后停止,即便是在网络环境较差的情况下丢失部分编码分组,因为喷泉码 是源源不断发送的,接收客户端还是能继续接收并能基于接收到预设数量的编码分组解码 出对应的分块数据,显然本发明实施例提供的技术方案提高了数据传输的可靠性;另外,由 于接收客户端只有在接收到预设数量的编码分组后才发出反馈信息,相较于现有技术中只 要有一次传输失败就要反馈一次重传请求,本发明实施例因采用了喷泉码减少了信道中反 馈信息的传输,有助于提高信道容量,使得网络更加健壮。
[0269] 运里需要说明的是:本实施例提供的所述网络系统中包含的适用于客户端的文件 下载装置可实现上述实施例一或实施例二提供的所述方法,具体的过程可参见上述实施例 中的相应内容,此处不再寶述。本实施例提供的所述网络系统中包含的适用于服务器端的 文件下载装置可实现上述实施例=或实施例四提供的所述方法,具体的过程可参见上述实 施例中的相应内容,此处不再寶述。
[0270] 实施例十
[0271] 本申请实施例提供一种文件下载装置,适用于客户端,包括存储器W及一个或者 多个处理器,其中,文件下载装置还包括:
[0272] -个或多个单元,所述一个或多个单元被存储在所述存储器中并被配置成由所述 一个或多个处理器执行,所述一个或多个单元包括用于执行W下步骤的指令:
[0273] 获取下载同一文件的客户端列表;
[0274] 将存储在本地的所述文件中的数据进行编码,生成第一喷泉码数据,其中,所述第 一喷泉码数据中包含有N个编码分组,N为大于零的整数;
[0275] 向所述客户端列表中请求下载所述数据的客户端发送所述N个编码分组。
[0276] 实施例^^一
[0277] 本发明实施例提供一种与文件下载装置结合使用的计算机程序产品,所述计算机 程序产品包括计算机可读的存储介质和内嵌于其中的计算机程序机制,所述计算机程序机 制包括执行W下步骤的指令:
[0278] 获取下载同一文件的客户端列表;
[0279] 将存储在本地的所述文件中的数据进行编码,生成第一喷泉码数据,其中,所述第 一喷泉码数据中包含有N个编码分组,N为大于零的整数;
[0280] 向所述客户端列表中请求下载所述数据的客户端发送所述N个编码分组。
[0281] 实施例十二
[0282] 本发明实施例提供一种文件下载装置,适用于服务器端,包括存储器W及一个或 者多个处理器,其中,文件下载装置还包括:
[0283] -个或多个单元,所述一个或多个单元被存储在所述存储器中并被配置成由所述 一个或多个处理器执行,所述一个或多个单元包括用于执行W下步骤的指令:
[0284] 接收客户端发送的下载请求,其中,所述下载请求中携带有所述文件的标识;
[0285] 若本地存储所述文件标识对应的文件,则将所述文件中的数据进行编码,生成喷 泉码数据,其中,所述喷泉码数据中包含有N个编码分组,N为大于零的整数;
[0286] 向所述客户端发送所述N个编码分组。
[0287] 实施例十S
[0288] 本发明实施例提供一种与文件下载装置结合使用的计算机程序产品,所述计算机 程序产品包括计算机可读的存储介质和内嵌于其中的计算机程序机制,所述计算机程序机 制包括执行W下步骤的指令:
[0289] 接收客户端发送的下载请求,其中,所述下载请求中携带有所述文件的标识;
[0290] 若本地存储所述文件标识对应的文件,则将所述文件中的数据进行编码,生成喷 泉码数据,其中,所述喷泉码数据中包含有N个编码分组,N为大于零的整数;
[0291 ]向所述客户端发送所述N个编码分组。
[0292] 所属领域的技术人员可W清楚地了解到,为描述的方便和简洁,上述描述的系统, 装置和单元的具体工作过程,可W参考前述方法实施例中的对应过程,在此不再寶述。
[0293] W上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可 W是或者也可W不是物理上分开的,作为单元显示的部件可W是或者也可W不是物理单 元,即可W位于一个地方,或者也可W分布到多个网络单元上。可W根据实际的需要选择其 中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性 的劳动的情况下,即可W理解并实施。
[0294] 通过W上的实施方式的描述,本领域的技术人员可W清楚地了解到各实施方式可 借助软件加必需的通用硬件平台的方式来实现,当然也可W通过硬件。基于运样的理解,上 述技术方案本质上或者说对现有技术做出贡献的部分可WW软件产品的形式体现出来,该 计算机软件产品可W存储在计算机可读存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指 令用W使得一台计算机设备(可W是个人计算机,服务器,或者网络设备等)执行各个实施 例或者实施例的某些部分所述的方法。
[0295]最后应说明的是:W上实施例仅用W说明本发明的技术方案,而非对其限制;尽管 参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可 W对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换; 而运些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和 范围。
【主权项】
1. 一种文件下载方法,适用于客户端,其特征在于,包括: 获取下载同一文件的客户端列表; 将存储在本地的所述文件中的数据进行编码,生成第一喷泉码数据,其中,所述第一喷 泉码数据中包含有N个编码分组,N为大于零的整数; 向所述客户端列表中请求下载所述数据的客户端发送所述N个编码分组。2. 根据权利要求1所述的方法,其特征在于,所述将存储在本地的所述文件中的数据进 行编码,生成第一喷泉码数据,包括: 将存储在本地的所述文件中的数据进行分组,得到K个原始数据分组; 对所述K个原始数据分组进行喷泉码编码,生成N个编码分组; 其中,K为大于或等于2的整数,N为大于零的整数,所述N个编码分组构成所述第一喷泉 码数据。3. 根据权利要求2所述的所述方法,其特征在于,还包括: 接收到所述客户端发送的反馈信息后,停止向所述客户端发送所述N个编码分组; 其中,所述反馈信息是所述客户端在接收到预设数量的所述编码分组后发出的,所述 预设数量大于所述K。4. 根据权利要求1~3中所述的方法,其特征在于,还包括: 接收客户端发送的第二喷泉码数据; 基于接收到的所述第二喷泉码数据中包含的Μ个编码分组,解码出所述第二喷泉码数 据对应的数据; 其中,Μ>Μ',所述Μ'为在生成所述第二喷泉码数据过程中将数据进行分组后得到的原 始数据分组的数量,所述Μ'为大于或等于2的整数。5. 根据权利要求1~3所述的方法,其特征在于,还包括: 若无法接收到所述客户端列表中的客户端发送的数据,则向服务器端发送下载请求, 所述下载请求中携带有欲下载文件标识; 接收所述服务器端发送的所述欲下载文件标识对应的文件数据的喷泉码数据; 基于接收到的所述文件数据的喷泉码数据中包含的S个编码分组,解码出所述欲下载 文件的文件数据; 其中,S>S',所述S'为在生成所述文件数据的喷泉码数据过程中将所述欲下载文件的 文件数据进行分组后得到的原始数据分组的数量,所述S'为大于或等于2的整数。6. 根据权利要求5所述的方法,其特征在于,还包括: 接收所述服务器端发送的调度信息,并根据所述调度信息,向所述调度信息指定的客 户端发送所述文件数据的喷泉码数据。7. 根据权利要求1~3中任一项所述的方法,其特征在于,还包括: 接收服务器端发送的查询请求,其中,所述查询请求中携带有欲查询文件标识; 若本地存储有所述欲查询文件标识对应的文件数据,则将所述欲查询文件的文件数据 进行编码,生成对应的喷泉码数据; 向所述服务器端发送所述欲查询文件对应的喷泉码数据。8. 根据权利要求1~3中任一项所述的方法,其特征在于,所述向所述客户端列表中请 求下载所述数据的客户端发送所述第一喷泉码数据,具体为: 采用用户数据报协议UDP向所述客户端列表中请求下载所述数据的客户端发送所述第 一喷泉码数据。9. 一种文件下载方法,适用于服务器端,其特征在于,包括: 接收客户端发送的下载请求,其中,所述下载请求中携带有所述文件的标识; 若网络中不存在存储有所述文件标识对应的文件的客户端,且本地存储所述文件标识 对应的文件,则将所述文件中的数据进行编码,生成喷泉码数据,其中,所述喷泉码数据中 包含有N个编码分组,N为大于零的整数; 向所述客户端发送所述N个编码分组。10. 根据权利要求9所述的方法,其特征在于,所述将所述文件中的数据进行编码,生成 喷泉码数据,包括: 将所述文件中的数据进行分组,得到K个原始数据分组; 对所述K个原始数据分组进行喷泉码编码,生成N个编码分组; 其中,K为大于或等于2的整数,N为大于零的整数。11. 根据权利要求10所述的方法,其特征在于,还包括: 接收到所述客户端发送的反馈信息后,停止向所述客户端发送所述N个编码分组; 其中,所述反馈信息是所述客户端在接收到预设数量的所述编码分组后发出的,所述 预设数量大于所述K。12. 根据权利要求9~11中任一项所述的方法,其特征在于,还包括: 若网络中不存在存储有所述文件标识对应的文件的客户端,且本地未存储所述文件标 识对应的文件,则向网络中的其他客户端发送查询请求,其中,所述查询请求中携带有所述 文件的文件标识; 若所述网络中存在有存储有所述文件的客户端,则接收所述客户端发送的喷泉码数 据; 基于接收到的所述喷泉码数据中包含的L个编码分组,解码出所述文件的数据; 其中,L>K,所述K为在生成所述喷泉码数据过程中将数据进行分组后得到的原始数据 分组的数量,所述K为大于或等于2的整数。13. 根据权利要求9~11中任一项所述的方法,其特征在于,所述向所述客户端发送所 述N个编码分组,具体为: 采用用户数据报协议UDP向所述客户端发送所述N个编码分组。14. 一种文件下载装置,其特征在于,包括: 获取模块,用于获取下载同一文件的客户端列表; 编码模块,用于将存储在本地的所述文件中的数据进行编码,生成第一喷泉码数据,其 中,所述第一喷泉码数据中包含有N个编码分组,N为大于零的整数; 发送模块,用于向所述客户端列表中请求下载所述数据的客户端发送所述N个编码分 组。15. 根据权利要求14所述的装置,其特征在于,所述编码模块,包括: 分组单元,用于将存储在本地的所述文件中的数据进行分组,得到K个原始数据分组; 编码单元,用于对所述K个原始数据分组进行喷泉码编码,生成N个编码分组; 其中,K为大于或等于2的整数,N为大于零的整数,所述N个编码分组构成所述第一喷泉 码数据。16. 根据权利要求15所述的装置,其特征在于,还包括: 所述发送模块,还用于在接收到所述客户端发送的反馈信息后,停止向所述客户端发 送所述N个编码分组; 其中,所述反馈信息是所述客户端在接收到预设数量的所述编码分组后发出的,所述 预设数量大于所述K。17. 根据权利要求14~16中任一项所述的装置,其特征在于,还包括: 第一接收模块,用于接收客户端发送的第二喷泉码数据; 第一解码模块,用于基于接收到的所述第二喷泉码数据中包含的Μ个编码分组,解码出 所述第二喷泉码数据对应的数据; 其中,Μ>Μ',所述Μ'为在生成所述第二喷泉码数据过程中将数据进行分组后得到的原 始数据分组的数量,所述Μ'为大于或等于2的整数。18. 根据权利要求14~16中任一项所述的装置,其特征在于,还包括: 所述发送模块,还用于当无法接收到所述客户端列表中的客户端发送的数据时,向服 务器端发送下载请求,所述下载请求中携带有欲下载文件标识; 第二接收模块,用于接收所述服务器端发送的所述欲下载文件标识对应的文件数据的 喷泉码数据; 第二解码模块,用于基于接收到的所述文件数据的喷泉码数据中包含的S个编码分组, 解码出所述欲下载文件的文件数据; 其中,s>s',所述S'为在生成所述文件数据的喷泉码数据过程中将所述欲下载文件的 文件数据进行分组后得到的原始数据分组的数量,所述s'为大于或等于2的整数。19. 根据权利要求18所述的装置,其特征在于, 所述第二接收模块,还用于接收所述服务器端发送的调度信息,并根据所述调度信息, 向所述调度信息指定的客户端发送所述文件数据的喷泉码数据。20. 根据权利要求14~16中任一项所述的文件下载装置,其特征在于,还包括: 第三接收模块,用于接收服务器端发送的查询请求,其中,所述查询请求中携带有欲查 询文件标识; 所述编码模块,还用于当本地存储有所述欲查询文件标识对应的文件数据时,将所述 欲查询文件的文件数据进行编码,生成对应的喷泉码数据; 所述发送模块,还用于向所述服务器端发送所述欲查询文件对应的喷泉码数据。21. 根据权利要求14~16中任一项所述的装置,其特征在于,所述发送模块,具体用于 采用用户数据报协议UDP向所述客户端列表中请求下载所述数据的客户端发送所述第一喷 泉码数据。22. -种文件下载装置,其特征在于,包括: 接收模块,用于接收客户端发送的下载请求,其中,所述下载请求中携带有所述文件的 标识; 编码模块,用于当网络中不存在存储有所述文件标识对应的文件的客户端,且本地存 储所述文件标识对应的文件时,将所述文件中的数据进行编码,生成喷泉码数据,其中,所 述喷泉码数据中包含有N个编码分组,N为大于零的整数; 发送模块,用于向所述客户端发送所述N个编码分组。23. 根据权利要求22所述的装置,其特征在于,所述编码模块,包括: 分组单元,用于将所述文件中的数据进行分组,得到K个原始数据分组; 编码单元,用于对所述K个原始数据分组进行喷泉码编码,生成N个编码分组; 其中,K为大于或等于2的整数,N为大于零的整数。24. 根据权利要求23所述的装置,其特征在于, 所述发送模块,还用于接收到所述客户端发送的反馈信息后,停止向所述客户端发送 所述N个编码分组; 其中,所述反馈信息是所述客户端在接收到预设数量的所述编码分组后发出的,所述 预设数量大于所述K。25. 根据权利要求22~24中任一项所述的装置,其特征在于,还包括: 所述发送模块,还用于当网络中不存在存储有所述文件标识对应的文件的客户端,且 本地未存储所述文件标识对应的文件时,向网络中的其他客户端发送查询请求,其中,所述 查询请求中携带有所述文件的文件标识; 所述接收模块,还用于当所述网络中存在有存储有所述文件的客户端时,接收所述客 户端发送的喷泉码数据; 解码模块,用于基于接收到的所述喷泉码数据中包含的L个编码分组,解码出所述文件 的数据; 其中,L>K,所述K为在生成所述喷泉码数据过程中将数据进行分组后得到的原始数据 分组的数量,所述K为大于或等于2的整数。26. 根据权利要求22~24中任一项所述的装置,其特征在于, 所述发送模块,具体用于采用用户数据报协议UDP向所述客户端发送所述N个编码分 组。27. -种文件下载系统,其特征在于,包括上述权利要求14~21中任一项所述的文件下 载装置以及上述权利要求22~26中任一项所述的文件下载装置。
【文档编号】H04L29/08GK105979003SQ201610509196
【公开日】2016年9月28日
【申请日】2016年6月30日
【发明人】陈翔, 胡勇
【申请人】乐视控股(北京)有限公司, 乐视网信息技术(北京)股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1