CN105979003A - 文件下载方法、装置及系统 - Google Patents
文件下载方法、装置及系统 Download PDFInfo
- Publication number
- CN105979003A CN105979003A CN201610509196.6A CN201610509196A CN105979003A CN 105979003 A CN105979003 A CN 105979003A CN 201610509196 A CN201610509196 A CN 201610509196A CN 105979003 A CN105979003 A CN 105979003A
- Authority
- CN
- China
- Prior art keywords
- data
- file
- client
- fountain codes
- coding
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 82
- 230000005540 biological transmission Effects 0.000 claims abstract description 61
- 238000011068 loading method Methods 0.000 claims description 22
- 239000000203 mixture Substances 0.000 claims description 5
- 238000004590 computer program Methods 0.000 description 16
- 230000007423 decrease Effects 0.000 description 10
- 230000008569 process Effects 0.000 description 7
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 6
- 239000003795 chemical substances by application Substances 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 239000011159 matrix material Substances 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 241000283074 Equus asinus Species 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000007596 consolidation process Methods 0.000 description 1
- 230000035622 drinking Effects 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 210000001503 joint Anatomy 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 239000007921 spray Substances 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/40—Support for services or applications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明实施例提供一种文件下载方法、装置及系统,涉及计算机技术领域。其中,所述方法适用于客户端,其包括:获取下载同一文件的客户端列表;将存储在本地的所述文件中的数据进行编码,生成第一喷泉码数据,其中,所述第一喷泉码数据中包含有N个编码分组,N为大于零的整数;向所述客户端列表中请求下载所述数据的客户端发送所述N个编码分组。本发明实施例提高了数据传输的可靠性;另外因采用了喷泉码减少了信道中反馈信息的传输,有助于提高信道容量,使得网络更加健壮。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种文件下载方法、装置及系统。
背景技术
随着计算机网络技术的发展,网络形成一种从集中式系统向分布式系统发展的趋势。P2P(peer to peer,对等网络)或P2SP(Peer to Server andPeer,点对服务器和点)网络随之诞生,它通过直接交换方式共享计算机资源和服务。
P2P或P2SP的基本传输模式都是把文件先分成块,再按块传输直到传完文件。P2SP除了包含P2P以外,P2SP的“S”是指服务器。P2SP有效地把原本孤立的服务器和其镜像资源以及P2P资源整合到了一起。
发明人在实现本发明的过程中发现:数据在客户端之间或客户端与服务器之间进行传输时,若网络环境恶劣,很可能导致数据同步传输失败,或者需要反复重传才能最终成功完成数据的传输。因此,在网络环境较差的情况下,P2P或P2SP网络中数据传输的可靠性较差。
发明内容
本发明实施例提供一种文件下载方法、装置及系统,用以解决现有技术中在恶劣的网络环境下数据传输可靠性较低的问题。
本发明实施例提供一种文件下载方法,适用于客户端,包括:
获取下载同一文件的客户端列表;
将存储在本地的所述文件中的数据进行编码,生成第一喷泉码数据,其中,所述第一喷泉码数据中包含有N个编码分组,N为大于零的整数;
向所述客户端列表中请求下载所述数据的客户端发送所述N个编码分组。
可选的,上述的方法中,所述将存储在本地的所述文件中的数据进行编码,生成第一喷泉码数据,包括:
将存储在本地的所述文件中的数据进行分组,得到K个原始数据分组;
对所述K个原始数据分组进行喷泉码编码,生成N个编码分组;
其中,K为大于或等于2的整数,N为大于零的整数,所述N个编码分组构成所述第一喷泉码数据。
可选的,上述的方法,还包括:
接收到所述客户端发送的反馈信息后,停止向所述客户端发送所述N个编码分组;
其中,所述反馈信息是所述客户端在接收到预设数量的所述编码分组后发出的,所述预设数量大于所述K。
可选的,上述的方法,还包括:
接收客户端发送的第二喷泉码数据;
基于接收到的所述第二喷泉码数据中包含的M个编码分组,解码出所述第二喷泉码数据对应的数据;
其中,M>M’,所述M’为在生成所述第二喷泉码数据过程中将数据进行分组后得到的原始数据分组的数量,所述M’为大于或等于2的整数。
可选的,上述的方法,还包括:
若无法接收到所述客户端列表中的客户端发送的数据,则向服务器端发送下载请求,所述下载请求中携带有欲下载文件标识;
接收所述服务器端发送的所述欲下载文件标识对应的文件数据的喷泉码数据;
基于接收到的所述文件数据的喷泉码数据中包含的S个编码分组,解码出所述欲下载文件的文件数据;
其中,S>S’,所述S’为在生成所述文件数据的喷泉码数据过程中将所述欲下载文件的文件数据进行分组后得到的原始数据分组的数量,所述S’为大于或等于2的整数。
可选的,上述的方法,还包括:
接收所述服务器端发送的调度信息,并根据所述调度信息,向所述调度信息指定的客户端发送所述文件数据的喷泉码数据。
可选的,上述的方法,还包括:
接收服务器端发送的查询请求,其中,所述查询请求中携带有欲查询文件标识;
若本地存储有所述欲查询文件标识对应的文件数据,则将所述欲查询文件的文件数据进行编码,生成对应的喷泉码数据;
向所述服务器端发送所述欲查询文件对应的喷泉码数据。
可选的,上述的方法中,所述向所述客户端列表中请求下载所述数据的客户端发送所述第一喷泉码数据,具体为:
采用用户数据报协议UDP向所述客户端列表中请求下载所述数据的客户端发送所述第一喷泉码数据。
本发明实施例还提供一种文件下载方法,适用于服务器端,包括:
接收客户端发送的下载请求,其中,所述下载请求中携带有所述文件的标识;
若网络中不存在存储有所述文件标识对应的文件的客户端,且本地存储所述文件标识对应的文件,则将所述文件中的数据进行编码,生成喷泉码数据,其中,所述喷泉码数据中包含有N个编码分组,N为大于零的整数;
向所述客户端发送所述N个编码分组。
可选的,上述的方法中,所述将所述文件中的数据进行编码,生成喷泉码数据,包括:
将所述文件中的数据进行分组,得到K个原始数据分组;
对所述K个原始数据分组进行喷泉码编码,生成N个编码分组;
其中,K为大于或等于2的整数,N为大于零的整数。
可选的,上述的方法,还包括:
接收到所述客户端发送的反馈信息后,停止向所述客户端发送所述N个编码分组;
其中,所述反馈信息是所述客户端在接收到预设数量的所述编码分组后发出的,所述预设数量大于所述K。
可选的,上述的方法,还包括:
若网络中不存在存储有所述文件标识对应的文件的客户端,且本地未存储所述文件标识对应的文件,则向网络中的其他客户端发送查询请求,其中,所述查询请求中携带有所述文件的文件标识;
若所述网络中存在有存储有所述文件的客户端,则接收所述客户端发送的喷泉码数据;
基于接收到的所述喷泉码数据中包含的L个编码分组,解码出所述文件的数据;
其中,L>K,所述K为在生成所述喷泉码数据过程中将数据进行分组后得到的原始数据分组的数量,所述K为大于或等于2的整数。
可选的,上述的方法中,所述向所述客户端发送所述N个编码分组,具体为:
采用用户数据报协议UDP向所述客户端发送所述N个编码分组。
本发明还提供了一种文件下载装置,适用于客户端,包括:
获取模块,用于获取下载同一文件的客户端列表;
编码模块,用于将存储在本地的所述文件中的数据进行编码,生成第一喷泉码数据,其中,所述第一喷泉码数据中包含有N个编码分组,N为大于零的整数;
发送模块,用于向所述客户端列表中请求下载所述数据的客户端发送所述N个编码分组。
可选的,上述的文件下载装置中,所述编码模块,包括:
分组单元,用于将存储在本地的所述文件中的数据进行分组,得到K个原始数据分组;
编码单元,用于对所述K个原始数据分组进行喷泉码编码,生成N个编码分组;
其中,K为大于或等于2的整数,N为大于零的整数。
可选的,上述的文件下载装置,还包括:
所述发送模块,还用于在接收到所述客户端发送的反馈信息后,停止向所述客户端发送所述N个编码分组;
其中,所述反馈信息是所述客户端在接收到预设数量的所述编码分组后发出的,所述预设数量大于所述K。
可选的,上述的文件下载装置,还包括:
第一接收模块,用于接收客户端发送的第二喷泉码数据;
第一解码模块,用于基于接收到的所述第二喷泉码数据中包含的M个编码分组,解码出所述第二喷泉码数据对应的数据;
其中,M>M’,所述M’为在生成所述第二喷泉码数据过程中将数据进行分组后得到的原始数据分组的数量,所述M’为大于或等于2的整数。
可选的,上述的文件下载装置,还包括:
所述发送模块,还用于当无法接收到所述客户端列表中的客户端发送的数据时,向服务器端发送下载请求,所述下载请求中携带有欲下载文件标识;
第二接收模块,用于接收所述服务器端发送的所述欲下载文件标识对应的文件数据的喷泉码数据;
第二解码模块,用于基于接收到的所述文件数据的喷泉码数据中包含的S个编码分组,解码出所述欲下载文件的文件数据;
其中,S>S’,所述S’为在生成所述文件数据的喷泉码数据过程中将所述欲下载文件的文件数据进行分组后得到的原始数据分组的数量,所述S’为大于或等于2的整数。
可选的,上述的文件下载装置中,所述第二接收模块,还用于接收所述服务器端发送的调度信息,并根据所述调度信息,向所述调度信息指定的客户端发送所述文件数据的喷泉码数据。
可选的,上述的文件下载装置,还包括:
第三接收模块,用于接收服务器端发送的查询请求,其中,所述查询请求中携带有欲查询文件标识;
所述编码模块,还用于当本地存储有所述欲查询文件标识对应的文件数据时,将所述欲查询文件的文件数据进行编码,生成对应的喷泉码数据;
所述发送模块,还用于向所述服务器端发送所述欲查询文件对应的喷泉码数据。
可选的,上述的文件下载装置中,所述发送模块,具体用于采用用户数据报协议UDP向所述客户端列表中请求下载所述数据的客户端发送所述第一喷泉码数据。
本发明实施例还提供了一种文件下载装置,适用于服务器端,包括:
接收模块,用于接收客户端发送的下载请求,其中,所述下载请求中携带有所述文件的标识;
编码模块,用于当网络中不存在存储有所述文件标识对应的文件的客户端,且本地存储所述文件标识对应的文件时,将所述文件中的数据进行编码,生成喷泉码数据,其中,所述喷泉码数据中包含有N个编码分组,N为大于零的整数;
发送模块,用于向所述客户端发送所述N个编码分组。
可选的,上述的文件下载装置中,所述编码模块,包括:
分组单元,用于将所述文件中的数据进行分组,得到K个原始数据分组;
编码单元,用于对所述K个原始数据分组进行喷泉码编码,生成N个编码分组;
其中,K为大于或等于2的整数,N为大于零的整数。
可选的,上述的文件下载装置中,所述发送模块,还用于接收到所述客户端发送的反馈信息后,停止向所述客户端发送所述N个编码分组;
其中,所述反馈信息是所述客户端在接收到预设数量的所述编码分组后发出的,所述预设数量大于所述K。
可选的,上述的文件下载装置,还包括:
所述发送模块,还用于当网络中不存在存储有所述文件标识对应的文件的客户端,且本地未存储所述文件标识对应的文件时,向网络中的其他客户端发送查询请求,其中,所述查询请求中携带有所述文件的文件标识;
所述接收模块,还用于当所述网络中存在有存储有所述文件的客户端时,接收所述客户端发送的喷泉码数据;
解码模块,用于基于接收到的所述喷泉码数据中包含的L个编码分组,解码出所述文件的数据;
其中,L>K,所述K为在生成所述喷泉码数据过程中将数据进行分组后得到的原始数据分组的数量,所述K为大于或等于2的整数。
可选的,上述的文件下载装置中,所述发送模块,具体用于采用用户数据报协议UDP向所述客户端发送所述N个编码分组。
本发明实施例还提供的了一种文件下载系统,其特征在于,包括适用于客户端的文件下载装置以及适用于服务器端的文件下载装置;其中,
所述适用于客户端的文件下载装置用于:
获取下载同一文件的客户端列表;
将存储在本地的所述文件中的数据进行编码,生成第一喷泉码数据,其中,所述第一喷泉码数据中包含有N个编码分组,N为大于零的整数;
向所述客户端列表中请求下载所述数据的客户端发送所述N个编码分组;
所述适用于服务器端的文件下载装置用于:
接收客户端发送的下载请求,其中,所述下载请求中携带有所述文件的标识;
若网络中不存在存储有所述文件标识对应的文件的客户端,且本地存储所述文件标识对应的文件,则将所述文件中的数据进行编码,生成喷泉码数据,其中,所述喷泉码数据中包含有N个编码分组,N为大于零的整数;
向所述客户端发送所述N个编码分组。
本发明实施例提供一种文件下载装置,适用于客户端,包括存储器以及一个或者多个处理器,其中,文件下载装置还包括:
一个或多个单元,所述一个或多个单元被存储在所述存储器中并被配置成由所述一个或多个处理器执行,所述一个或多个单元包括用于执行以下步骤的指令:
获取下载同一文件的客户端列表;
将存储在本地的所述文件中的数据进行编码,生成第一喷泉码数据,其中,所述第一喷泉码数据中包含有N个编码分组,N为大于零的整数;
向所述客户端列表中请求下载所述数据的客户端发送所述N个编码分组。
本发明实施例提供一种与文件下载装置结合使用的计算机程序产品,所述计算机程序产品包括计算机可读的存储介质和内嵌于其中的计算机程序机制,所述计算机程序机制包括执行以下步骤的指令:
获取下载同一文件的客户端列表;
将存储在本地的所述文件中的数据进行编码,生成第一喷泉码数据,其中,所述第一喷泉码数据中包含有N个编码分组,N为大于零的整数;
向所述客户端列表中请求下载所述数据的客户端发送所述N个编码分组。
本发明实施例提供一种文件下载装置,适用于服务器端,包括存储器以及一个或者多个处理器,其中,文件下载装置还包括:
一个或多个单元,所述一个或多个单元被存储在所述存储器中并被配置成由所述一个或多个处理器执行,所述一个或多个单元包括用于执行以下步骤的指令:
接收客户端发送的下载请求,其中,所述下载请求中携带有所述文件的标识;
若网络中不存在存储有所述文件标识对应的文件的客户端,且本地存储所述文件标识对应的文件,则将所述文件中的数据进行编码,生成喷泉码数据,其中,所述喷泉码数据中包含有N个编码分组,N为大于零的整数;
向所述客户端发送所述N个编码分组。
本发明实施例提供一种与文件下载装置结合使用的计算机程序产品,所述计算机程序产品包括计算机可读的存储介质和内嵌于其中的计算机程序机制,所述计算机程序机制包括执行以下步骤的指令:
接收客户端发送的下载请求,其中,所述下载请求中携带有所述文件的标识;
若网络中不存在存储有所述文件标识对应的文件的客户端,且本地存储所述文件标识对应的文件,则将所述文件中的数据进行编码,生成喷泉码数据,其中,所述喷泉码数据中包含有N个编码分组,N为大于零的整数;
向所述客户端发送所述N个编码分组。
本发明实施例提供的文件下载方法、装置及系统,通过将待传输的目标文件的分块数据编码成喷泉码数据,并基于喷泉码数据的特点源源不断地向请求下载的客户端发送,直到接收到客户端发送反馈信息后停止,即便是在网络环境较差的情况下丢失部分编码分组,因为喷泉码是源源不断发送的,接收客户端还是能继续接收并能基于接收到预设数量的编码分组解码出对应的分块数据,显然本发明实施例提供的技术方案提高了数据传输的可靠性;另外,由于接收客户端只有在接收到预设数量的编码分组后才发出反馈信息,相较于现有技术中只要有一次传输失败就要反馈一次重传请求,本发明实施例因采用了喷泉码减少了信道中反馈信息的传输,有助于提高信道容量,使得网络更加健壮。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种可选的P2SP网络架构示意图;
图2为本发明实施例一提供的文件下载方法的流程示意图;
图3为本发明实施例二提供的文件下载方法的流程示意图;
图4为本发明实施例三提供的文件下载方法的流程示意图;
图5为本发明实施例四提供的文件下载方法的流程示意图;
图6为本发明实施例六提供的文件下载装置的结构示意图;
图7为本发明实施例七提供的文件下载装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
首先结合图1介绍本发明实施例提供的文件下载方法可以适用于的应用场景。
本发明实施例提供的所述文件下载方法可适用在P2P和P2SP网络中。其中,P2SP在P2P的架构基础上,加入了一个数据源提供者S(Server),由这个数据源将多媒体数据分发到网络中的某些节点,其他的一些节点可以对等网的方式从其他有数据的节点那获取多媒体数据。节点之间的数据共享,以均等的方式进行内容分发。下面以P2SP网络为例,对本发明提供的技术方案进行说明。
图1为本发明实施例提供的一种可选的P2SP网络架构示意图。如图1所示,该网络架构中包含有服务器端设备602以及多个客户端设备601,假设该网络架构中包含有A、B、C三个客户端设备,这三个客户端设备需要下载同一文件。服务器端设备存储有下载同一文件的客户端列表,该列表中包含有客户端设备A、客户端设备B和客户端设备C的标识。具体的,服务器端设备在接收到客户端设备发送的下载请求后,会将发送下载请求的客户端设备的标识添加到以所述文件的标识为关键词key的客户端列表中;或者,服务器端设备根据所述下载请求中携带的文件的标识,获取该文件的属性计算出文件的文件指纹,并将发送下载请求的客户端设备的标识添加到以所述文件的指纹作为关键词key的客户端列表中。其中,文件的属性包含但不限于:URL(Uniform Resource Locator,统一资源定位符),BT(BitTorrent,比特洪流)种子文件,ed2k(eDonkey2000network,电驴2000网络)链接等。客户端设备A、客户端设备B和客户端设备C在获取到客户端列表后,这三个客户端设备即可实现节点之间的数据共享,以均等的方式进行数据的分发,相互之间进行数据的交换,最终均达到下载完成目标文件的目的。
假设目标文件被分成3个分块数据,客户端设备A存储有目标文件的分块数据1、客户端设备B存储有目标文件的分块数据2、客户端设备C存储有目标文件的分块数据3。客户端设备A可将分块数据1进行编码,生成喷泉码数据;然后持续向客户端列表中的请求下载目标文件的客户端设备B和客户端设备C分发分块数据1的喷泉码数据中的多个编码分组。同样的,客户端设备B可将本地分块数据2进行喷泉码编码然后向客户端设备A和客户端设备C进行分发;客户端设备C可将本地分块数据3进行喷泉码编码然后向客户端设备A和客户端设备B进行分发。
这里需要说明的是:若网络中不存在存储有目标文件的客户端设备或因某些原因无法获取到其他客户端设备发送的数据,则客户端设备可向服务器端设备发送下载请求,服务器端设备此时相当于网络中的一个客户端设备向请求下载目标文件的客户端设备分发分块数据。同样的,若服务器端设备接收到客户端设备发送的下载目标文件的下载请求后,查询本地无该目标文件时,服务器端设备也可向网络中其他客户端设备发送查询请求。如果网络中存在客户端设备有此文件,那么此时服务器端设备同普通的客户端设备一样从存储有目标文件的客户端设备处获取文件分块信息及分块数据,并将获取到的文件分块信息及分块数据返回给请求下载的客户端设备。如果当服务器端设备在全P2SP网络中都没有查询到目标文件,那么服务器端设备将根据提交请求的客户端设备所提交的信息,到其他网络,如BT、ed2k等网络中,获取资源。如果服务器端设备在其他网络中还是没有查询到结果,那么将向请求的客户端设备发出无法获取该资源,由客户端设备根据目标文件的属性自行下载此文件。
实施例一
图2示出了本发明实施例一提供的文件下载方法的流程示意图。本实施例提供的所述方法可适用于客户端。本实施例提供的所述方法的执行主体可以是文件下载装置,所述文件下载装置可以是安装在客户端设备上的硬件实体或应用程序。如图2所示,本实施例一提供的所述方法,包括:
步骤101、获取下载同一文件的客户端列表。
具体的,本步骤可采用如下方法实现:
步骤S11、向服务器端发送下载所述文件的下载请求。
步骤S12、接收所述服务器端反馈的以所述文件的标识为关键词key的客户端列表。
在P2SP网络中,若服务器端设备本地存储有所述文件标识对应的文件,则所述服务器端设备在接收到所述下载请求后,首先会根据所述文件的标识获取所述文件的属性,并根据所述属性计算所述第一目标文件的指纹。其中,指纹的生成方式可以参考现有方式实现,本实施例不赘述。文件的属性包含但不限于:URL,BT种子文件,ed2k链接等。然后,若服务器端设备查询到本地已创建有以所述指纹为关键词key的客户端列表,则所述客户端的标识添加到所述客户端列表中;若服务器端设备查询本地无以所述指纹为key的客户端列表,则创建以所述指纹为key的客户端列表,并将所述客户端的标识添加到所述客户端列表中。最后向所述客户端反馈以所述指纹为key的客户端列表。
步骤102、将存储在本地的所述文件中的数据进行编码,生成第一喷泉码数据,其中,所述第一喷泉码数据中包含有N个编码分组,N为大于零的整数。
在具体实施时,本步骤可采用如下方法实现:
首先,将存储在本地的所述文件中的数据进行分组,得到K个原始数据分组。
然后,对所述K个原始数据分组进行喷泉码编码,生成N个编码分组。
其中,K为大于或等于2的整数,N为大于零的整数。
实际应用中,该喷泉码可以是LT码,也可以是Raptor码。
所谓的喷泉码,就是指使用该种编码可以由k个原始数据分组生成任意数量的编码分组,而只要知道其中任意n(n≥k)个编码分组,即可通过译码成功恢复出全部原始数据分组。
本实施例中,假设接收到的数据单元的长度为L比特,将长度为L比特的数据单元分割成个输入原始数据分组,则每个输入原始数据分组的长为l。
定义:度d表示喷泉码编码过程中每次选取原始数据分组的个数。
喷泉码编码生成一个编码分组的具体过程如下:
1)随机(伪随机)选择一个度d;
2)从所有的原始数据分组中随机(伪随机)选取d个不同的输入数据分组;
3)将这d个不同输入数据分组模二和,生成一个编码分组。
假设已知n个编码分组,每个编码分组代表一个有k个未知输入的线性方程。则整个译码过程可以看作是n个方程联合求解k个未知数的线性方程组G×X=N,其中G是生成矩阵,大小为n×k,X为k×1的待求解原始数据分组向量,N为n×1的编码分组向量。当生成矩阵G列满秩即G的秩为k时,待求解原始数据分组X有唯一确定解。
步骤103、向所述客户端列表中请求下载所述数据的客户端发送所述N个编码分组。
在具体实施时,可采用UDP(User Datagram Protocol,用户数据报协议)协议向所述客户端列表中请求下载所述数据的客户端发送所述N个编码分组。本发明实施例采用UDP协议可以减少传输过程中的协议数据的传输量,即便存在数据丢包在喷泉码的编码保证下也能顺利的、安全的还原数据。
这里需要补充的是:在实际应用中,喷泉码的发送端随机编码,由k个原始分组生成任意数量的编码分组,发送端在不知道这些数据包是否被成功接收的情况下,持续发送数据包。而接收端只要收到k(1+ε)个编码分组的任意子集,即收到一个稍微大于原来k值得N,就可通过译码以高概率(和ε有关)成功地恢复全部原始分组。
下面这个比喻形象地解释了这个过程。
单个源节点S如同源源不断产生水滴(编码分组)的喷泉,不停地向周围的多个桶K(表示多个接收端的缓存)发送"水滴"(表示数据包),当一个桶里的水满了以后(缓存满),它才向源节点发送一个反馈。每次发送的水滴是一帧里面随机选择的一些包组合起来的包,这种组合可以是线性的,也可以是非线性的,随机选择保证了每次发送的信息对接收节点是有用的。桶在装满水之后(接收足够数量的水滴),即可达到饮用(成功译码)的目的,而不必关心具体是哪一滴水(编码分组)流入桶中。当源节点收到所有桶的ACK以后,再发送新的一帧,否则继续发送组合包。
本发明实施例提供的技术方案,通过将待传输的目标文件的分块数据编码成喷泉码数据,并基于喷泉码数据的特点源源不断地向请求下载的客户端发送,直到接收到客户端发送反馈信息后停止,即便是在网络环境较差的情况下丢失部分编码分组,因为喷泉码是源源不断发送的,接收客户端还是能继续接收并能基于接收到预设数量的编码分组解码出对应的分块数据,显然本发明实施例提供的技术方案提高了数据传输的可靠性;另外,由于接收客户端只有在接收到预设数量的编码分组后才发出反馈信息,相较于现有技术中只要有一次传输失败就要反馈一次重传请求,本发明实施例因采用了喷泉码减少了信道中反馈信息的传输,有助于提高信道容量,使得网络更加健壮。
实施例二
图3示出了本发明实施例一提供的文件下载方法的流程示意图。本实施例提供的所述方法可适用于客户端。本实施例提供的所述方法的执行主体可以是文件下载装置,所述文件下载装置可以是安装在客户端设备上的硬件实体或应用程序。如图3所示,本实施例二提供的所述方法,包括:
步骤201、获取下载同一文件的客户端列表。
步骤202、将存储在本地的所述文件中的数据进行编码,生成第一喷泉码数据,其中,所述第一喷泉码数据中包含有N个编码分组,N为大于零的整数。
具体的编码过程可参见上述实施例一中的相应部分的内容,此处不再赘述。
步骤203、向所述客户端列表中请求下载所述数据的客户端发送所述N个编码分组。
步骤204、接收到所述客户端发送的反馈信息后,停止向所述客户端发送所述N个编码分组。
其中,所述反馈信息是所述客户端在接收到预设数量的所述编码分组后发出的,所述预设数量大于所述K。在具体实施时,所述预设数量可以等于K(1+ε),ε为预设的译码开销。译码开销可人为设定,当然译码开销越大,基于接收到的编码分组恢复出全部原始分组的概率也就越大。在具体实施时,技术人员可根据多次试验找到较为合适的译码开销值。
步骤205、接收客户端发送的第二喷泉码数据。
步骤206、基于接收到的所述第二喷泉码数据中包含的M个编码分组,解码出所述第二喷泉码数据对应的数据。
其中,M>M’,所述M’为在生成所述第二喷泉码数据过程中将数据进行分组后得到的原始数据分组的数量,所述M’为大于或等于2的整数。具体实施时,M可以等于M’(1+ε),ε为预设的译码开销。译码开销可人为设定,当然译码开销越大,基于接收到的编码分组恢复出全部原始分组的概率也就越大。在具体实施时,技术人员可根据多次试验找到较为合适的译码开销值。
步骤207、若无法接收到所述客户端列表中的客户端发送的数据,则向服务器端发送下载请求,所述下载请求中携带有欲下载文件标识。
在实际应用中,客户端无法接收到所述客户端列表中的客户端发送的数据的情况可能有如下几种情况:
情况1,客户端与客户端列表中的所有客户端均建立连接失败。
情况2,客户端与客户端列表中的所有客户端中的至少一个客户端成功建立了连接,但无法接收到所述成功建立连接的客户端发送的数据。
步骤208、接收所述服务器端发送的所述欲下载文件标识对应的文件数据的喷泉码数据。
步骤209、基于接收到的所述文件数据的喷泉码数据中包含的S个编码分组,解码出所述欲下载文件的文件数据。
其中,S>S’,所述S’为在生成所述文件数据的喷泉码数据过程中将所述欲下载文件的文件数据进行分组后得到的原始数据分组的数量,所述S’为大于或等于2的整数。同样的,在具体实施时,S可以等于S’(1+ε),ε为预设的译码开销。译码开销可人为设定,当然译码开销越大,基于接收到的编码分组恢复出全部原始分组的概率也就越大。在具体实施时,技术人员可根据多次试验找到较为合适的译码开销值。
步骤210、接收所述服务器端发送的调度信息,并根据所述调度信息,向所述调度信息指定的客户端发送所述文件数据的喷泉码数据。
步骤211、接收服务器端发送的查询请求,其中,所述查询请求中携带有欲查询文件标识。
步骤212、若本地存储有所述欲查询文件标识对应的文件数据,则将所述欲查询文件的文件数据进行编码,生成对应的喷泉码数据。
步骤213、向所述服务器端发送所述欲查询文件对应的喷泉码数据。
本发明实施例提供的技术方案,通过将待传输的目标文件的分块数据编码成喷泉码数据,并基于喷泉码数据的特点源源不断地向请求下载的客户端发送,直到接收到客户端发送反馈信息后停止,即便是在网络环境较差的情况下丢失部分编码分组,因为喷泉码是源源不断发送的,接收客户端还是能继续接收并能基于接收到预设数量的编码分组解码出对应的分块数据,显然本发明实施例提供的技术方案提高了数据传输的可靠性;另外,由于接收客户端只有在接收到预设数量的编码分组后才发出反馈信息,相较于现有技术中只要有一次传输失败就要反馈一次重传请求,本发明实施例因采用了喷泉码减少了信道中反馈信息的传输,有助于提高信道容量,使得网络更加健壮。
实施例三
图4示出了本发明实施例三提供的文件下载方法的流程示意图。本实施例提供的所述方法可适用于服务器端。本实施例提供的所述方法的执行主体可以是文件下载装置,该文件下载装置可以是安装在服务器端设备上的硬件实体或应用程序。如图4所示,本实施例三提供的所述方法,包括:
步骤301、接收客户端发送的下载请求,其中,所述下载请求中携带有所述文件的标识。
在具体实施时,所述下载请求可以是所述客户端在无法从网络中其他客户端(如下载所述文件的客户端列表中的客户端)中下载到所述标识对应的文件情况下发送的,当然也可以是所述客户端直接发送的。
在实际应用中,客户端无法接收到所述客户端列表中的客户端发送的数据的情况可能有如下几种情况:
情况1,客户端与客户端列表中的所有客户端均建立连接失败。
情况2,客户端与客户端列表中的所有客户端中的至少一个客户端成功建立了连接,但无法接收到所述成功建立连接的客户端发送的数据。
步骤302、若网络中不存在存储有所述文件标识对应的文件的客户端,且本地存储所述文件标识对应的文件,则将所述文件中的数据进行编码,生成喷泉码数据,其中,所述喷泉码数据中包含有N个编码分组,N为大于零的整数。
具体的,本步骤可采用如下方法实现:
首先,将所述文件中的数据进行分组,得到K个原始数据分组。
然后,对所述K个原始数据分组进行喷泉码编码,生成N个编码分组。
其中,K为大于或等于2的整数,N为大于零的整数。
步骤303、向所述客户端发送所述N个编码分组。
本发明实施例提供的技术方案,通过将待传输的目标文件的分块数据编码成喷泉码数据,并基于喷泉码数据的特点源源不断地向请求下载的客户端发送,直到接收到客户端发送反馈信息后停止,即便是在网络环境较差的情况下丢失部分编码分组,因为喷泉码是源源不断发送的,接收客户端还是能继续接收并能基于接收到预设数量的编码分组解码出对应的分块数据,显然本发明实施例提供的技术方案提高了数据传输的可靠性;另外,由于接收客户端只有在接收到预设数量的编码分组后才发出反馈信息,相较于现有技术中只要有一次传输失败就要反馈一次重传请求,本发明实施例因采用了喷泉码减少了信道中反馈信息的传输,有助于提高信道容量,使得网络更加健壮。
实施例四
图5示出了本发明实施例四提供的文件下载方法的流程示意图。本实施例提供的所述方法可适用于服务器端。本实施例提供的所述方法的执行主体可以是文件下载装置,该文件下载装置可以是安装在服务器端设备上的硬件实体或应用程序。如图5所示,本实施例四提供的所述方法,包括:
步骤401、接收客户端发送的下载请求,其中,所述下载请求中携带有所述文件的标识。
步骤402、若网络中不存在存储有所述文件标识对应的文件的客户端,且本地存储所述文件标识对应的文件,则将所述文件中的数据进行编码,生成喷泉码数据,其中,所述喷泉码数据中包含有N个编码分组,N为大于零的整数。
步骤403、向所述客户端发送所述N个编码分组。
这里需要说明的是:可采用UDP协议向所述客户端发送所述N个编码分组,采用UDP协议可以减少传输过程中的协议数据的传输量,即便存在数据丢包在喷泉码的编码保证下也能顺利的、安全的还原数据。
步骤404、接收到所述客户端发送的反馈信息后,停止向所述客户端发送所述N个编码分组。
其中,所述反馈信息是所述客户端在接收到预设数量的所述编码分组后发出的,所述预设数量大于所述K。在具体实施时,所述预设数量可以等于K(1+ε),ε为预设的译码开销。译码开销可人为设定,当然译码开销越大,基于接收到的编码分组恢复出全部原始分组的概率也就越大。在具体实施时,技术人员可根据多次试验找到较为合适的译码开销值。
步骤405、若网络中不存在存储有所述文件标识对应的文件的客户端,且本地未存储所述文件标识对应的文件,则向网络中的其他客户端发送查询请求,其中,所述查询请求中携带有所述文件的文件标识。
步骤406、若所述网络中存在有存储有所述文件的客户端,则接收所述客户端发送的喷泉码数据。
这里需要说明的是所述网络可以包括P2SP网络、BT网络,ed2k网络等中的一种网络或任意多种网络。
步骤407、基于接收到的所述喷泉码数据中包含的L个编码分组,解码出所述文件的数据。
其中,L>K,所述K为在生成所述喷泉码数据过程中将数据进行分组后得到的原始数据分组的数量,所述K为大于或等于2的整数。所述L可以等于K(1+ε),ε为预设的译码开销。译码开销可人为设定,当然译码开销越大,基于接收到的编码分组恢复出全部原始分组的概率也就越大。在具体实施时,技术人员可根据多次试验找到较为合适的译码开销值。
步骤408、若所述网络中不存在有存储有所述文件的客户端,则向所述客户端发出无法获取所述文件的提示信息。
本发明实施例提供的技术方案,通过将待传输的目标文件的分块数据编码成喷泉码数据,并基于喷泉码数据的特点源源不断地向请求下载的客户端发送,直到接收到客户端发送反馈信息后停止,即便是在网络环境较差的情况下丢失部分编码分组,因为喷泉码是源源不断发送的,接收客户端还是能继续接收并能基于接收到预设数量的编码分组解码出对应的分块数据,显然本发明实施例提供的技术方案提高了数据传输的可靠性;另外,由于接收客户端只有在接收到预设数量的编码分组后才发出反馈信息,相较于现有技术中只要有一次传输失败就要反馈一次重传请求,本发明实施例因采用了喷泉码减少了信道中反馈信息的传输,有助于提高信道容量,使得网络更加健壮。
需要说明的是:对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
实施五
如图6示出了本发明实施例五提供的文件下载装置的结构示意图。为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该文件下载装置可以是安装在客户端设备上的硬件实体或应用程序。其中,所述客户端设备可以是:计算机、笔记本计算机、手机、平板电脑、PDA(Personal Digital Assistant,个人数字助理)、POS(Point of Sales,销售终端)、车载电脑等任意终端设备。如图6所示,本实施例五提供的所述文件下载装置,包括:获取模块501、编码模块502及发送模块503。其中,
获取模块501用于获取下载同一文件的客户端列表;
编码模块502用于将存储在本地的所述文件中的数据进行编码,生成第一喷泉码数据,其中,所述第一喷泉码数据中包含有N个编码分组,N为大于零的整数;
发送模块503用于向所述客户端列表中请求下载所述数据的客户端发送所述N个编码分组。
本发明实施例提供的技术方案,通过将待传输的目标文件的分块数据编码成喷泉码数据,并基于喷泉码数据的特点源源不断地向请求下载的客户端发送,直到接收到客户端发送反馈信息后停止,即便是在网络环境较差的情况下丢失部分编码分组,因为喷泉码是源源不断发送的,接收客户端还是能继续接收并能基于接收到预设数量的编码分组解码出对应的分块数据,显然本发明实施例提供的技术方案提高了数据传输的可靠性;另外,由于接收客户端只有在接收到预设数量的编码分组后才发出反馈信息,相较于现有技术中只要有一次传输失败就要反馈一次重传请求,本发明实施例因采用了喷泉码减少了信道中反馈信息的传输,有助于提高信道容量,使得网络更加健壮。
这里需要说明的是:本实施例提供的所述文件下载装置可实现上述实施例一或实施例二中所提供的文件下载方法,具体的实现细节可参见上述内容,此处不再赘述。
实施六
本发明实施例六基于上述实施例五提供的文件下载装置对本发明提供的技术方案进行进一步的说明。为了便于描述,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该文件下载装置可以是安装在客户端设备上的硬件实体或应用程序。其中所述客户端设备可以是:计算机、笔记本计算机、手机、平板电脑、PDA(Personal DigitalAssistant,个人数字助理)、POS(Point of Sales,销售终端)、车载电脑等任意终端设备。本实施例六基于所述实施例五,提供的所述文件下载装置中,所述编码模块可采用如下方法实现。具体的,所述编码模块包括:分组单元和编码单元。其中,分组单元用于将存储在本地的所述文件中的数据进行分组,得到K个原始数据分组。编码单元用于对所述K个原始数据分组进行喷泉码编码,生成N个编码分组。其中,K为大于或等于2的整数,N为大于零的整数。
进一步的,所述的发送模块还可用于在接收到所述客户端发送的反馈信息后,停止向所述客户端发送所述N个编码分组;其中,所述反馈信息是所述客户端在接收到预设数量的所述编码分组后发出的,所述预设数量大于所述K。
进一步的,所述文件下载装置还可包括:第一接收模块和第一解码模块。其中,第一接收模块,用于接收客户端发送的第二喷泉码数据;第一解码模块,用于基于接收到的所述第二喷泉码数据中包含的M个编码分组,解码出所述第二喷泉码数据对应的数据;其中,M>M’,所述M’为在生成所述第二喷泉码数据过程中将数据进行分组后得到的原始数据分组的数量,所述M’为大于或等于2的整数。
进一步的,所述文件下载装置还可包括:
所述发送模块,还用于当无法接收到所述客户端列表中的客户端发送的数据时,向服务器端发送下载请求,所述下载请求中携带有欲下载文件标识;
第二接收模块,用于接收所述服务器端发送的所述欲下载文件标识对应的文件数据的喷泉码数据;
第二解码模块,用于基于接收到的所述文件数据的喷泉码数据中包含的S个编码分组,解码出所述欲下载文件的文件数据;
其中,S>S’,所述S’为在生成所述文件数据的喷泉码数据过程中将所述欲下载文件的文件数据进行分组后得到的原始数据分组的数量,所述S’为大于或等于2的整数。
进一步的,所述第二接收模块,还用于接收所述服务器端发送的调度信息,并根据所述调度信息,向所述调度信息指定的客户端发送所述文件数据的喷泉码数据。
进一步的,所述文件下载装置还可包括:第三接收模块,用于接收服务器端发送的查询请求,其中,所述查询请求中携带有欲查询文件标识;
所述编码模块,还用于当本地存储有所述欲查询文件标识对应的文件数据时,将所述欲查询文件的文件数据进行编码,生成对应的喷泉码数据;
所述发送模块,还用于向所述服务器端发送所述欲查询文件对应的喷泉码数据。
发送模块,用于采用用户数据报协议UDP向所述客户端列表中请求下载所述数据的客户端发送所述第一喷泉码数据。
本发明实施例提供的技术方案,通过将待传输的目标文件的分块数据编码成喷泉码数据,并基于喷泉码数据的特点源源不断地向请求下载的客户端发送,直到接收到客户端发送反馈信息后停止,即便是在网络环境较差的情况下丢失部分编码分组,因为喷泉码是源源不断发送的,接收客户端还是能继续接收并能基于接收到预设数量的编码分组解码出对应的分块数据,显然本发明实施例提供的技术方案提高了数据传输的可靠性;另外,由于接收客户端只有在接收到预设数量的编码分组后才发出反馈信息,相较于现有技术中只要有一次传输失败就要反馈一次重传请求,本发明实施例因采用了喷泉码减少了信道中反馈信息的传输,有助于提高信道容量,使得网络更加健壮。
这里需要说明的是:本实施例提供的所述文件下载装置可实现上述实施例一或实施例二中所提供的文件下载方法,具体的实现细节可参见上述内容,此处不再赘述。
实施七
如图7示出了本发明实施例七提供的文件下载装置的结构示意图。如图7所示,本实施例七提供的所述文件下载装置,包括:接收模块701、编码模块702和发送模块703。其中,
接收模块701用于接收客户端发送的下载请求,其中,所述下载请求中携带有所述文件的标识;
编码模块702用于当网络中不存在存储有所述文件标识对应的文件的客户端,且本地存储所述文件标识对应的文件时,将所述文件中的数据进行编码,生成喷泉码数据,其中,所述喷泉码数据中包含有N个编码分组,N为大于零的整数;
发送模块703用于向所述客户端发送所述N个编码分组。
本发明实施例提供的技术方案,通过将待传输的目标文件的分块数据编码成喷泉码数据,并基于喷泉码数据的特点源源不断地向请求下载的客户端发送,直到接收到客户端发送反馈信息后停止,即便是在网络环境较差的情况下丢失部分编码分组,因为喷泉码是源源不断发送的,接收客户端还是能继续接收并能基于接收到预设数量的编码分组解码出对应的分块数据,显然本发明实施例提供的技术方案提高了数据传输的可靠性;另外,由于接收客户端只有在接收到预设数量的编码分组后才发出反馈信息,相较于现有技术中只要有一次传输失败就要反馈一次重传请求,本发明实施例因采用了喷泉码减少了信道中反馈信息的传输,有助于提高信道容量,使得网络更加健壮。
这里需要说明的是:本实施例提供的所述文件下载装置可实现上述实施例三或实施例四中所提供的文件下载方法,具体的实现细节可参见上述内容,此处不再赘述。
实施八
本发明实施例八基于上述实施例七提供的文件下载装置对本发明提供的技术方案进行进一步的说明。本实施例八基于所述实施例七,提供的所述文件下载装置中,所述编码模块可采用如下方法实现。具体的,所述编码模块包括:分组单元和编码单元。其中,分组单元用于将所述文件中的数据进行分组,得到K个原始数据分组;编码单元用于对所述K个原始数据分组进行喷泉码编码,生成N个编码分组;其中,K为大于或等于2的整数,N为大于零的整数。
进一步的,所述发送模块,还用于接收到所述客户端发送的反馈信息后,停止向所述客户端发送所述N个编码分组;其中,所述反馈信息是所述客户端在接收到预设数量的所述编码分组后发出的,所述预设数量大于所述K。
进一步的,本实施例提供所述的文件下载装置,还包括:
所述发送模块,还用于当网络中不存在存储有所述文件标识对应的文件的客户端,且本地未存储所述文件标识对应的文件时,向网络中的其他客户端发送查询请求,其中,所述查询请求中携带有所述文件的文件标识;
所述接收模块,还用于当所述网络中存在有存储有所述文件的客户端时,接收所述客户端发送的喷泉码数据;
解码模块,用于基于接收到的所述喷泉码数据中包含的L个编码分组,解码出所述文件的数据;
其中,L>K,所述K为在生成所述喷泉码数据过程中将数据进行分组后得到的原始数据分组的数量,所述K为大于或等于2的整数。
进一步的,本实施例提供的所述文件下载装置中,所述发送模块,具体用于采用用户数据报协议UDP向所述客户端发送所述N个编码分组。
本发明实施例提供的技术方案,通过将待传输的目标文件的分块数据编码成喷泉码数据,并基于喷泉码数据的特点源源不断地向请求下载的客户端发送,直到接收到客户端发送反馈信息后停止,即便是在网络环境较差的情况下丢失部分编码分组,因为喷泉码是源源不断发送的,接收客户端还是能继续接收并能基于接收到预设数量的编码分组解码出对应的分块数据,显然本发明实施例提供的技术方案提高了数据传输的可靠性;另外,由于接收客户端只有在接收到预设数量的编码分组后才发出反馈信息,相较于现有技术中只要有一次传输失败就要反馈一次重传请求,本发明实施例因采用了喷泉码减少了信道中反馈信息的传输,有助于提高信道容量,使得网络更加健壮。
这里需要说明的是:本实施例提供的所述文件下载装置可实现上述实施例三或实施例四中所提供的文件下载方法,具体的实现细节可参见上述内容,此处不再赘述。
实施例九
如图1所示,本发明实施例九提供的一种网络系统包括适用于客户端的文件下载装置以及适用于服务器端的文件下载装置;其中,
所述适用于客户端的文件下载装置用于:
获取下载同一文件的客户端列表;
将存储在本地的所述文件中的数据进行编码,生成第一喷泉码数据,其中,所述第一喷泉码数据中包含有N个编码分组,N为大于零的整数;
向所述客户端列表中请求下载所述数据的客户端发送所述N个编码分组;
所述适用于服务器端的文件下载装置用于:
接收客户端发送的下载请求,其中,所述下载请求中携带有所述文件的标识;
若本地存储所述文件标识对应的文件,则将所述文件中的数据进行编码,生成喷泉码数据,其中,所述喷泉码数据中包含有N个编码分组,N为大于零的整数;
向所述客户端发送所述N个编码分组。
其中,所述适用于客户端的文件下载装置可以是安装在客户端设备上的硬件实体或应用程序,所述适用于服务器端的文件下载装置可以是安装在服务器端设备上的硬件实体或应用程序。
本发明实施例提供的技术方案,通过将待传输的目标文件的分块数据编码成喷泉码数据,并基于喷泉码数据的特点源源不断地向请求下载的客户端发送,直到接收到客户端发送反馈信息后停止,即便是在网络环境较差的情况下丢失部分编码分组,因为喷泉码是源源不断发送的,接收客户端还是能继续接收并能基于接收到预设数量的编码分组解码出对应的分块数据,显然本发明实施例提供的技术方案提高了数据传输的可靠性;另外,由于接收客户端只有在接收到预设数量的编码分组后才发出反馈信息,相较于现有技术中只要有一次传输失败就要反馈一次重传请求,本发明实施例因采用了喷泉码减少了信道中反馈信息的传输,有助于提高信道容量,使得网络更加健壮。
这里需要说明的是:本实施例提供的所述网络系统中包含的适用于客户端的文件下载装置可实现上述实施例一或实施例二提供的所述方法,具体的过程可参见上述实施例中的相应内容,此处不再赘述。本实施例提供的所述网络系统中包含的适用于服务器端的文件下载装置可实现上述实施例三或实施例四提供的所述方法,具体的过程可参见上述实施例中的相应内容,此处不再赘述。
实施例十
本申请实施例提供一种文件下载装置,适用于客户端,包括存储器以及一个或者多个处理器,其中,文件下载装置还包括:
一个或多个单元,所述一个或多个单元被存储在所述存储器中并被配置成由所述一个或多个处理器执行,所述一个或多个单元包括用于执行以下步骤的指令:
获取下载同一文件的客户端列表;
将存储在本地的所述文件中的数据进行编码,生成第一喷泉码数据,其中,所述第一喷泉码数据中包含有N个编码分组,N为大于零的整数;
向所述客户端列表中请求下载所述数据的客户端发送所述N个编码分组。
实施例十一
本发明实施例提供一种与文件下载装置结合使用的计算机程序产品,所述计算机程序产品包括计算机可读的存储介质和内嵌于其中的计算机程序机制,所述计算机程序机制包括执行以下步骤的指令:
获取下载同一文件的客户端列表;
将存储在本地的所述文件中的数据进行编码,生成第一喷泉码数据,其中,所述第一喷泉码数据中包含有N个编码分组,N为大于零的整数;
向所述客户端列表中请求下载所述数据的客户端发送所述N个编码分组。
实施例十二
本发明实施例提供一种文件下载装置,适用于服务器端,包括存储器以及一个或者多个处理器,其中,文件下载装置还包括:
一个或多个单元,所述一个或多个单元被存储在所述存储器中并被配置成由所述一个或多个处理器执行,所述一个或多个单元包括用于执行以下步骤的指令:
接收客户端发送的下载请求,其中,所述下载请求中携带有所述文件的标识;
若本地存储所述文件标识对应的文件,则将所述文件中的数据进行编码,生成喷泉码数据,其中,所述喷泉码数据中包含有N个编码分组,N为大于零的整数;
向所述客户端发送所述N个编码分组。
实施例十三
本发明实施例提供一种与文件下载装置结合使用的计算机程序产品,所述计算机程序产品包括计算机可读的存储介质和内嵌于其中的计算机程序机制,所述计算机程序机制包括执行以下步骤的指令:
接收客户端发送的下载请求,其中,所述下载请求中携带有所述文件的标识;
若本地存储所述文件标识对应的文件,则将所述文件中的数据进行编码,生成喷泉码数据,其中,所述喷泉码数据中包含有N个编码分组,N为大于零的整数;
向所述客户端发送所述N个编码分组。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (27)
1.一种文件下载方法,适用于客户端,其特征在于,包括:
获取下载同一文件的客户端列表;
将存储在本地的所述文件中的数据进行编码,生成第一喷泉码数据,其中,所述第一喷泉码数据中包含有N个编码分组,N为大于零的整数;
向所述客户端列表中请求下载所述数据的客户端发送所述N个编码分组。
2.根据权利要求1所述的方法,其特征在于,所述将存储在本地的所述文件中的数据进行编码,生成第一喷泉码数据,包括:
将存储在本地的所述文件中的数据进行分组,得到K个原始数据分组;
对所述K个原始数据分组进行喷泉码编码,生成N个编码分组;
其中,K为大于或等于2的整数,N为大于零的整数,所述N个编码分组构成所述第一喷泉码数据。
3.根据权利要求2所述的所述方法,其特征在于,还包括:
接收到所述客户端发送的反馈信息后,停止向所述客户端发送所述N个编码分组;
其中,所述反馈信息是所述客户端在接收到预设数量的所述编码分组后发出的,所述预设数量大于所述K。
4.根据权利要求1~3中所述的方法,其特征在于,还包括:
接收客户端发送的第二喷泉码数据;
基于接收到的所述第二喷泉码数据中包含的M个编码分组,解码出所述第二喷泉码数据对应的数据;
其中,M>M’,所述M’为在生成所述第二喷泉码数据过程中将数据进行分组后得到的原始数据分组的数量,所述M’为大于或等于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中任一项所述的装置,其特征在于,还包括:
第一接收模块,用于接收客户端发送的第二喷泉码数据;
第一解码模块,用于基于接收到的所述第二喷泉码数据中包含的M个编码分组,解码出所述第二喷泉码数据对应的数据;
其中,M>M’,所述M’为在生成所述第二喷泉码数据过程中将数据进行分组后得到的原始数据分组的数量,所述M’为大于或等于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中任一项所述的文件下载装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610509196.6A CN105979003A (zh) | 2016-06-30 | 2016-06-30 | 文件下载方法、装置及系统 |
PCT/CN2016/101090 WO2018000647A1 (zh) | 2016-06-30 | 2016-09-30 | 文件下载方法、装置、终端及服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610509196.6A CN105979003A (zh) | 2016-06-30 | 2016-06-30 | 文件下载方法、装置及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105979003A true CN105979003A (zh) | 2016-09-28 |
Family
ID=56953643
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610509196.6A Pending CN105979003A (zh) | 2016-06-30 | 2016-06-30 | 文件下载方法、装置及系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN105979003A (zh) |
WO (1) | WO2018000647A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018000647A1 (zh) * | 2016-06-30 | 2018-01-04 | 乐视控股(北京)有限公司 | 文件下载方法、装置、终端及服务器 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111597389B (zh) * | 2019-02-21 | 2024-02-06 | 上海微电子装备(集团)股份有限公司 | 一种数据的处理方法、装置,设备及存储介质 |
CN110943801A (zh) * | 2019-11-13 | 2020-03-31 | 哈尔滨工程大学 | 基于关键信息反馈的数字喷泉码传输方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103856560A (zh) * | 2014-02-19 | 2014-06-11 | 东莞中山大学研究院 | 一种基于编码耦合的p2p流媒体调度系统及方法 |
CN105262564A (zh) * | 2015-09-09 | 2016-01-20 | 哈尔滨工业大学深圳研究生院 | 一种分布式喷泉码的二维度分布设计方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510783B (zh) * | 2009-03-26 | 2011-06-15 | 北京理工大学 | 一种基于有限域的多进制喷泉编码和译码方法 |
CN101515842B (zh) * | 2009-04-03 | 2011-10-26 | 北京理工大学 | 一种基于喷泉编码的部分协作信息传输方法 |
CN101553036B (zh) * | 2009-05-19 | 2011-05-25 | 北京理工大学 | 一种基于喷泉编码的随机接入方法 |
CN102684817A (zh) * | 2011-03-10 | 2012-09-19 | 万鑫明 | 一种基于数字喷泉码的云存储体系结构及服务提供方法 |
KR101795484B1 (ko) * | 2013-04-01 | 2017-11-10 | 삼성전자주식회사 | 무선 통신 시스템에서 파운틴 부호를 이용한 데이터 송신 장치 및 방법 |
CN105680990B (zh) * | 2016-01-13 | 2018-12-14 | 北京理工大学 | 一种基于喷泉编码的区域信息共享方法 |
CN105979003A (zh) * | 2016-06-30 | 2016-09-28 | 乐视控股(北京)有限公司 | 文件下载方法、装置及系统 |
-
2016
- 2016-06-30 CN CN201610509196.6A patent/CN105979003A/zh active Pending
- 2016-09-30 WO PCT/CN2016/101090 patent/WO2018000647A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103856560A (zh) * | 2014-02-19 | 2014-06-11 | 东莞中山大学研究院 | 一种基于编码耦合的p2p流媒体调度系统及方法 |
CN105262564A (zh) * | 2015-09-09 | 2016-01-20 | 哈尔滨工业大学深圳研究生院 | 一种分布式喷泉码的二维度分布设计方法 |
Non-Patent Citations (1)
Title |
---|
潘雍: "《基于喷泉码的P2P文件共享系统研究》", 《万方在线出版》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018000647A1 (zh) * | 2016-06-30 | 2018-01-04 | 乐视控股(北京)有限公司 | 文件下载方法、装置、终端及服务器 |
Also Published As
Publication number | Publication date |
---|---|
WO2018000647A1 (zh) | 2018-01-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Ng et al. | A comprehensive survey on coded distributed computing: Fundamentals, challenges, and networking applications | |
JP4726557B2 (ja) | ネットワークコーディングを使用したコンテンツ配信 | |
CN105979003A (zh) | 文件下载方法、装置及系统 | |
CN116167084A (zh) | 一种基于混合策略的联邦学习模型训练隐私保护方法及系统 | |
CN103297447B (zh) | 一种资源共享方法及其设备 | |
Ng et al. | A survey of coded distributed computing | |
CN110417456A (zh) | 基于无人机的信息采集方法 | |
CN104393957B (zh) | 基于x态的量子并行多方可控稠密编码方法 | |
CN104463061A (zh) | 在网络连接不可靠情况下的数据传输系统及方法 | |
CN109413202B (zh) | 区块链交易信息的排序系统及方法 | |
US9116827B2 (en) | System and method for optimizing luby transform (LT) codes to facilitate data transmission over communication network | |
KR20230062487A (ko) | Nft 기반의 작품 거래 서비스를 제공하는 방법 및 장치 | |
CN102088331B (zh) | 一种数据传输方法及网络节点 | |
CN106788886B (zh) | 一种lt码编解码方法 | |
CN111447044A (zh) | 分布式存储方法和传输译码方法 | |
WO2017166481A1 (zh) | 进行跨区域的文件分享的方法及系统 | |
CN103685469B (zh) | 基于p2p的文件下载方法和系统及客户端 | |
CN105897767A (zh) | 调度方法、调度响应方法及设备和系统 | |
CN113037848B (zh) | 文件上传方法和系统 | |
CN108768952A (zh) | 一种流媒体传输方法、客户端、服务器和存储介质 | |
KR20160005947A (ko) | P2p를 이용한 하이브리드 스토리지 시스템 및 이를 이용한 데이터 전송 방법 | |
CN109150397A (zh) | 一种构造极化码序列的方法及装置 | |
Su et al. | Raptorqp2p: Maximize the performance of p2p file distribution with raptorq coding | |
CN105897382A (zh) | 数据同步方法及装置 | |
CN109284109A (zh) | 一种基于分享的多任务执行方法、装置和设备/终端/服务器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160928 |
|
WD01 | Invention patent application deemed withdrawn after publication |