CN105991691B - 用于传输信息的方法、设备和系统 - Google Patents
用于传输信息的方法、设备和系统 Download PDFInfo
- Publication number
- CN105991691B CN105991691B CN201510058974.XA CN201510058974A CN105991691B CN 105991691 B CN105991691 B CN 105991691B CN 201510058974 A CN201510058974 A CN 201510058974A CN 105991691 B CN105991691 B CN 105991691B
- Authority
- CN
- China
- Prior art keywords
- information
- receiving device
- data block
- local
- transmission
- 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.)
- Active
Links
Landscapes
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开一种用于传输信息的方法、设备和系统。其中在用于传输信息的方法中,当接收到信息接收设备发送的请求消息时,从请求消息中提取出第一信息和第二信息,其中第一信息表示信息接收设备已经拥有的数据块信息,第二信息表示信息接收设备请求的数据块信息,将第一信息写入到本地的RemoteMap信息中,判断本地是否具有与第二信息相对应的数据块,若本地具有与第二信息相对应的数据块,则将与第二信息相对应的数据块传输给信息接收设备,若本地没有与第二信息相对应的数据块,则将相应判断结果发送给信息接收设备,以便信息接收设备根据相应判断结果更新自身的RemoteMap信息。从而使Web应用能够不依赖于服务器,保证文件在各种场景下都能准确高效地进行传输。
Description
技术领域
本发明涉及通信领域,特别涉及一种用于传输信息的方法、设备和系统。
背景技术
传统的文件传输方法主要包括以下几种:一是需要依赖运行着FTP(FileTransfer Protocol,文件传输协议)协议的服务器,客户机利用类似于远程登录的方式登录到服务器上,利用该机文件系统命令进行操作;二是集成在即时聊天工具中,通过即时通信协议实现客户端之间的文件传输;三是基于BitTorrent协议,客户机需要安装多点共享协议软件,并使用Tracker服务器记录下载用户信息。
以上三种方式有两个共同的特点:一是需要使用软件或者插件;二是需要服务器的支持。Web应用可以使用WebRTC(Web Real-Time Communication,网页实时通信)技术的DataChannel接口,建立直连的数据通道,这为浏览器之间进行P2P(Peer to Peer,对等网络)文件传输提供了可能。这种基于WebRTC的文件传输,浏览器的特性决定了其可以不需要任何插件,只需打开网页就能实现。但是由于建立的都是P2P连接,数据直接通过数据通道传送,用户之间并不知道文件传输任务的状态以及其他用户的信息,这使得基于WebRTC的文件传输具有很大的局限性。
发明内容
本发明实施例提供一种用于传输信息的方法、设备和系统,从而使Web应用能够不依赖于服务器,保证文件在各种场景下都能准确高效地进行传输。
根据本发明的一个方面,提供一种用于传输信息的方法,包括:
当接收到信息接收设备发送的请求消息时,从请求消息中提取出第一信息和第二信息,其中第一信息表示信息接收设备已经拥有的数据块信息,第二信息表示信息接收设备请求的数据块信息;
将第一信息写入到本地的RemoteMap信息中;
判断本地是否具有与第二信息相对应的数据块;
若本地具有与第二信息相对应的数据块,则将与第二信息相对应的数据块传输给信息接收设备;
若本地没有与第二信息相对应的数据块,则将相应判断结果发送给信息接收设备,以便信息接收设备根据相应判断结果更新自身的RemoteMap信息。
在一个实施例中,将第一信息写入到本地的RemoteMap信息中之后,还包括:
判断所述请求消息是否由信息接收设备直接发送;
若所述请求消息由信息接收设备直接发送,则进一步读取本地的RemoteMap信息;
根据读取的RemoteMap信息,判断是否还存在候选信息发送设备,其中候选信息发送设备具有与第二信息相对应的数据块;
若存在候选信息发送设备,则将所述请求消息转发给相应的候选信息发送设备,以便候选信息发送设备对转发的请求消息进行处理;
然后执行判断本地是否具有与第二信息相对应的数据块的步骤。
在一个实施例中,若不存在候选信息发送设备,则执行判断本地是否具有与第二信息相对应的数据块的步骤。
在一个实施例中,若所述请求消息不是由信息接收设备直接发送,则将本地的Map信息发送给信息接收设备,其中本地的Map信息表示本地已经拥有的数据块信息,以便信息接收设备将接收到的Map信息写入自身的RemoteMap信息;
然后执行判断本地是否具有与第二信息相对应的数据块的步骤。
在一个实施例中,将第一信息写入到本地的RemoteMap信息中之后,还包括:
判断信息接收设备是否在发送队列中;
若信息接收设备不在发送队列中,则执行判断所述请求消息是否由信息接收设备直接发送的步骤。
在一个实施例中,还包括:
读取要发送的文件;
将文件分割为数据块,并将数据块信息写入本地的Map信息中;
与信息接收设备建立数据通道;
将包括数据块信息的文件信息FileInfo发送给信息接收设备;
判断是否接收到信息接收设备发送的确认信息;
若接收到信息接收设备发送的确认信息,则执行当接收到信息接收设备发送的请求消息时,从请求消息中提取出第一信息和第二信息的步骤。
根据本发明的另一方面,提供一种用于传输信息的信息发送设备,包括接收单元、提取单元、信息写入单元、第一识别单元和发送单元,其中:
接收单元,用于接收信息接收设备发送的请求消息;
提取单元,用于当接收单元接收到信息接收设备发送的请求消息时,从请求消息中提取出第一信息和第二信息,其中第一信息表示信息接收设备已经拥有的数据块信息,第二信息表示信息接收设备请求的数据块信息;
信息写入单元,用于将第一信息写入到本地的RemoteMap信息中;
第一识别单元,用于判断本地是否具有与第二信息相对应的数据块;
发送单元,用于根据第一识别单元的判断结果,若本地具有与第二信息相对应的数据块,则将与第二信息相对应的数据块传输给信息接收设备;若本地没有与第二信息相对应的数据块,则将相应判断结果发送给信息接收设备,以便信息接收设备根据相应判断结果更新自身的RemoteMap信息。
在一个实施例中,信息发送设备还包括第二识别单元、信息读取单元和第三识别单元,其中:
第二识别单元,用于在信息写入单元将第一信息写入到本地的RemoteMap信息中后,判断所述请求消息是否由信息接收设备直接发送;
信息读取单元,用于根据第二识别单元的判断结果,若所述请求消息由信息接收设备直接发送,则进一步读取本地的RemoteMap信息;
第三识别单元,用于根据信息读取单元读取的RemoteMap信息,判断是否还存在候选信息发送设备,其中候选信息发送设备具有与第二信息相对应的数据块;
发送单元还用于根据第三识别单元的判断结果,若存在候选信息发送设备,则将所述请求消息转发给相应的候选信息发送设备,以便候选信息发送设备对转发的请求消息进行处理;然后指示第一识别单元执行判断本地是否具有与第二信息相对应的数据块的操作。
在一个实施例中,第三识别单元还用于在不存在候选信息发送设备时,指示第一识别单元执行判断本地是否具有与第二信息相对应的数据块的操作。
在一个实施例中,发送单元还用于根据第二识别单元的判断结果,若所述请求消息不是由信息接收设备直接发送,则将本地的Map信息发送给信息接收设备,其中本地的Map信息表示本地已经拥有的数据块信息,以便信息接收设备将接收到的Map信息写入自身的RemoteMap信息;然后指示第一识别单元执行判断本地是否具有与第二信息相对应的数据块的操作。
在一个实施例中,信息发送设备还包括第四识别单元,其中:
第四识别单元,用于在信息写入单元将第一信息写入到本地的RemoteMap信息中后,判断信息接收设备是否在发送队列中;若信息接收设备不在发送队列中,则指示第二识别设备执行判断所述请求消息是否由信息接收设备直接发送的操作。
在一个实施例中,信息发送设备还包括读取单元、文件分割单元、数据通道建立单元和第五识别单元,其中:
读取单元,用于读取要发送的文件;
文件分割单元,用于将文件分割为数据块,并将数据块信息写入本地的Map信息中;
数据通道建立单元,用于与信息接收设备建立数据通道;
发送单元还用于将包括数据块信息的文件信息FileInfo发送给信息接收设备;
第五识别单元,用于判断接收单元是否接收到信息接收设备发送的确认信息;若接收到信息接收设备发送的确认信息,则指示提取单元在接收单元接收到信息接收设备发送的请求消息时,执行从请求消息中提取出第一信息和第二信息的操作。
根据本发明的另一方面,提供一种用于传输信息的系统,包括信息发送设备和信息接收设备,其中:
信息发送设备,为上述任一实施例涉及的信息发送设备;
信息接收设备,用于向信息发送设备发送请求信息,其中请求信息中包括第一信息和第二信息,第一信息表示信息接收设备已经拥有的数据块信息,第二信息表示信息接收设备请求的数据块信息;当接收到信息发送设备发送的用于指示信息发送设备没有与第二信息相对应的数据块的指示时,更新自身的RemoteMap信息。
在一个实施例中,信息接收设备具体在向信息发送设备发送请求消息后,判断是否在预定时间内接收到信息发送设备发送的数据;若未能在预定时间内接收到信息发送设备发送的数据,则进一步根据自身的RemoteMap信息重新选择数据提供设备,并将请求消息发送给重新选择的数据提供设备,以便从重新选择的数据提供设备获取相应数据块,其中重新选择的数据提供设备具有与第二信息相对应的数据块。
本发明通过信息接收设备在发送传输请求时声明自身所拥有和所请求的信息,收到请求的设备可根据信息拥有情况进行文件传输,同时通过上述传输处理还能够使一个设备了解到其它设备的信息拥有情况,这使得Web应用能够不依赖于服务器,保证文件在各种场景下都能准确高效地进行传输。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明用于传输信息的方法一个实施例的示意图。
图2为本发明用于传输信息的方法另一实施例的示意图。
图3为本发明用于传输信息的方法又一实施例的示意图。
图4为本发明用于传输信息的信息发送设备一个实施例的示意图。
图5为本发明用于传输信息的信息发送设备另一实施例的示意图。
图6为本发明用于传输信息的信息发送设备又一实施例的示意图。
图7为本发明用于传输信息的系统一个实施例的示意图。
图8为本发明用于传输信息的系统另一实施例的示意图。
图9为本发明信息接收设备工作流程一个实施例的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
图1为本发明用于传输信息的方法一个实施例的示意图。优选的,本实施例的方法步骤可由信息发送设备执行。
步骤101,当接收到信息接收设备发送的请求(Request)消息时,从请求消息中提取出第一信息和第二信息,其中第一信息表示信息接收设备已经拥有的数据块信息,第二信息表示信息接收设备请求的数据块信息。
步骤102,将第一信息写入到本地的RemoteMap信息中。
例如,可在每个设备本地存储Map表和RemoteMap表,其中Map表中存储本地当前对文件的拥有情况,RemoteMap表用于存储其它用户设备对文件的拥有情况。
通过将第一信息写入本地的RemoteMap信息中,便于了解信息接收设备的信息拥有情况。
步骤103,判断本地是否具有与第二信息相对应的数据块。若本地具有与第二信息相对应的数据块,则执行步骤104;若本地没有与第二信息相对应的数据块,则执行步骤105。
步骤104,将与第二信息相对应的数据块传输给信息接收设备。之后,不再执行本实施例的其它步骤。
信息接收设备接收到数据块后,还可更新自身的Map信息。
步骤105,将相应判断结果发送给信息接收设备(例如回复一个请求为空的Request消息),以便信息接收设备根据相应判断结果更新自身的RemoteMap信息。
通过使信息接收设备更新自身的RemoteMap信息,从而可以使信息发送设备及时更新信息发送设备的信息拥有情况。
基于本发明上述实施例提供的用于传输信息的方法,通过信息接收设备在发送传输请求时声明自身所拥有和所请求的信息,收到请求的设备可根据信息拥有情况进行文件传输,同时还能够使一个设备了解到其它设备的信息拥有情况,这使得Web应用能够不依赖于服务器,保证文件在各种场景下都能准确高效地进行传输。
例如,在断点续传方式下,信息接收方通过声明还缺少文件中的哪些数据块,信息发送方仅将信息接收方需要的数据块部分提供给信息接收方,从而提高了文件传输效率。
图2为本发明用于传输信息的方法另一实施例的示意图。优选的,本实施例的方法步骤可由信息发送设备执行。
步骤201,当接收到信息接收设备发送的请求消息时,从请求消息中提取出第一信息和第二信息,其中第一信息表示信息接收设备已经拥有的数据块信息,第二信息表示信息接收设备请求的数据块信息。
步骤202,将第一信息写入到本地的RemoteMap信息中。
优选的,在步骤202之后,还可进一步判断信息接收设备是否在发送队列中。若信息接收设备不在发送队列中,可进行后续处理。若信息接收设备已经在发送队列中,则表明此时还要给信息接收设备发送其它信息,为了避免出现故障,可终止该处理。
步骤203,判断所述请求消息是否由信息接收设备直接发送。若所述请求消息由信息接收设备直接发送,则执行步骤205;若所述请求消息不是由信息接收设备直接发送,则执行步骤204。
例如,可在第一信息中记录信息接收设备的标识(如IP地址等)。通过将DataChannel连接通道的信息和第一信息里面的标识比对,即可判断请求消息是否由信息接收设备直接发送的。
步骤204,建立和信息接收设备之间的数据通道,将本地的Map信息发送给信息接收设备,其中本地的Map信息表示本地已经拥有的数据块信息,以便信息接收设备将接收到的Map信息写入自身的RemoteMap信息。然后执行步骤207。在这种情况下,若请求不是直接发送的,则将信息发送设备当前的Map信息发送给信息接收设备,以便信息接收设备了解信息发送设备所拥有的信息,之后再进行相关操作时可直接向信息发送设备发送请求,从而提高传输效率。
步骤205,读取本地的RemoteMap信息,根据读取的RemoteMap信息,判断是否还存在候选信息发送设备,其中候选信息发送设备具有与第二信息相对应的数据块。若存在候选信息发送设备,则执行步骤206;若不存在候选信息发送设备,则执行步骤207。
步骤206,将包括第一信息和第二信息的请求消息转发给相应的候选信息发送设备。
候选信息发送设备在接收到转发的请求信息后,开始从步骤201执行,由于此时请求消息是经转发的,因此会进入步骤204。
通过上述处理,可实现共享式传输。即当发现其它设备也具有相关数据块时,可利用这些设备为信息接收设备提供信息,从而能够充分利用所有用户设备的带宽,提高了文件传输的效率,同时使各设备都能了解文件资源在网络中的分布情况。
步骤207,判断本地是否具有与第二信息相对应的数据块。若本地具有与第二信息相对应的数据块,则执行步骤208;若本地没有与第二信息相对应的数据块,则执行步骤209。
步骤208,将与第二信息相对应的数据块传输给信息接收设备。之后,不再执行本实施例的其它步骤。
信息接收设备接收到数据块后,还可更新自身的Map信息。
步骤209,将相应判断结果发送给信息接收设备,以便信息接收设备根据相应判断结果更新自身的RemoteMap信息。
需要说明的是,在本实施例中,是由信息接收设备最终决定数据块由哪个信息发送设备发过来。在存在多个信息发送设备时,由信息接收设备根据网络情况、负载程度等因素选择有关信息发送设备提供相应数据块。
图3为本发明用于传输信息的方法又一实施例的示意图。优选的,本实施例的方法步骤可由信息发送设备执行。信息发送设备在共享信息前可执行下列步骤。
步骤301,读取要发送的文件。
例如,可使用fileReader读取要发送的文件,计算出文件的哈希值作为文件的唯一标识。
步骤302,将文件分割为数据块,并将数据块信息写入本地的Map信息中。
步骤303,与信息接收设备建立数据通道。
例如,可与信息接收设备建立PeerConnection连接,创建直连的数据通道datachannel。
步骤304,将包括数据块信息的文件信息FileInfo发送给信息接收设备。
步骤305,判断是否接收到信息接收设备发送的确认信息。若接收到信息接收设备发送的确认信息,则执行步骤306;若未接收到信息接收设备发送的确认信息,则执行步骤307。
步骤306,执行图1或图2所示的流程。之后,不再执行本实施例的其它步骤。
步骤307,由于对方拒绝接收文件,断开连接,流程结束。
图4为本发明用于传输信息的信息发送设备一个实施例的示意图。如图4所示,信息发送设备可包括接收单元401、提取单元402、信息写入单元403、第一识别单元404和发送单元405。其中:
接收单元401,用于接收信息接收设备发送的请求消息。
提取单元402,用于当接收单元401接收到信息接收设备发送的请求消息时,从请求消息中提取出第一信息和第二信息,其中第一信息表示信息接收设备已经拥有的数据块信息,第二信息表示信息接收设备请求的数据块信息。
信息写入单元403,用于将第一信息写入到本地的RemoteMap信息中。
第一识别单元404,用于判断本地是否具有与第二信息相对应的数据块。
发送单元405,用于根据第一识别单元404的判断结果,若本地具有与第二信息相对应的数据块,则将与第二信息相对应的数据块传输给信息接收设备,信息接收设备接收到数据块后,还可更新自身的Map信息。若本地没有与第二信息相对应的数据块,则将相应判断结果发送给信息接收设备,以便信息接收设备根据相应判断结果更新自身的RemoteMap信息。
通过使信息接收设备更新自身的RemoteMap信息,从而可以使信息发送设备及时更新信息发送设备的信息拥有情况。
基于本发明上述实施例提供的用于传输信息的方法,通过信息接收设备在发送传输请求时声明自身所拥有和所请求的信息,收到请求的设备可根据信息拥有情况进行文件传输,同时还能够使一个设备了解到其它设备的信息拥有情况,这使得Web应用能够不依赖于服务器,保证文件在各种场景下都能准确高效地进行传输。
例如,在断点续传方式下,信息接收方通过声明还缺少文件中的哪些数据块,信息发送方仅将信息接收方需要的数据块部分提供给信息接收方,从而提高了文件传输效率。
图5为本发明用于传输信息的信息发送设备另一实施例的示意图。与图4所示实施例相比,在图5所示实施例中,信息发送设备还包括第二识别单元501、信息读取单元502、第三识别单元503。其中:
第二识别单元501,用于在信息写入单元403将第一信息写入到本地的RemoteMap信息中后,判断所述请求消息是否由信息接收设备直接发送。
信息读取单元502,用于根据第二识别单元501的判断结果,若所述请求消息由信息接收设备直接发送,则进一步读取本地的RemoteMap信息。
第三识别单元503,用于根据信息读取单元502读取的RemoteMap信息,判断是否还存在候选信息发送设备,其中候选信息发送设备具有与第二信息相对应的数据块。
发送单元405还用于根据第三识别单元503的判断结果,若存在候选信息发送设备,则将所述请求消息转发给相应的候选信息发送设备,以便候选信息发送设备对转发的请求消息进行处理;然后指示第一识别单元404执行判断本地是否具有与第二信息相对应的数据块的操作。
即,在发现其它设备也具有相关数据块时,可利用这些设备为信息接收设备提供信息,从而实现共享式传输,能够充分利用所有用户设备的带宽,提高了文件传输的效率,同时使各设备都能了解文件资源在网络中的分布情况。
优选的,第三识别单元503还用于在不存在候选信息发送设备时,指示第一识别单元404执行判断本地是否具有与第二信息相对应的数据块的操作。
即,在不能实现共享式传输的情况下,由信息发送设备自身完成信息传输处理。
优选的,发送单元405还用于根据第二识别单元501的判断结果,若所述请求消息不是由信息接收设备直接发送,则建立和信息接收设备之间的数据通道,将本地的Map信息发送给信息接收设备,其中本地的Map信息表示本地已经拥有的数据块信息,以便信息接收设备将接收到的Map信息写入自身的RemoteMap信息;然后指示第一识别单元404执行判断本地是否具有与第二信息相对应的数据块的操作。
即,若请求不是直接发送的,则将信息发送设备当前的Map信息发送给信息接收设备,以便信息接收设备了解信息发送设备所拥有的信息,之后再进行相关操作时可直接向信息发送设备发送请求,从而提高传输效率。
优选的,信息发送设备还包括第四识别单元504。其中:
第四识别单元504,用于在信息写入单元403将第一信息写入到本地的RemoteMap信息中后,判断信息接收设备是否在发送队列中。若信息接收设备不在发送队列中,则指示第二识别设备501执行判断所述请求消息是否由信息接收设备直接发送的操作。若信息接收设备在发送队列中,为了避免出现错误,可取消当前处理。
图6为本发明用于传输信息的信息发送设备又一实施例的示意图。与图5所示实施例相比,在图6所示实施例中,信息发送设备还包括读取单元601、文件分割单元602、数据通道建立单元603和第五识别单元604。其中:
读取单元601,用于读取要发送的文件。
文件分割单元602,用于将文件分割为数据块,并将数据块信息写入本地的Map信息中。
数据通道建立单元603,用于与信息接收设备建立数据通道。
发送单元405还用于将包括数据块信息的文件信息FileInfo发送给信息接收设备。
第五识别单元604,用于判断接收单元401是否接收到信息接收设备发送的确认信息;若接收到信息接收设备发送的确认信息,则指示提取单元402在接收单元接收到信息接收设备发送的请求消息时,执行从请求消息中提取出第一信息和第二信息的操作。
图7为本发明用于传输信息的系统一个实施例的示意图。如图7所示,该系统可包括信息发送设备701和信息接收设备702。其中:
信息发送设备701,为图4-图6中任一实施例涉及的信息发送设备。
信息接收设备702,用于向信息发送设备701发送请求信息,其中请求信息中包括第一信息和第二信息,第一信息表示信息接收设备已经拥有的数据块信息,第二信息表示信息接收设备请求的数据块信息。当接收到信息发送设备701发送的用于指示信息发送设备没有与第二信息相对应的数据块的指示时,更新自身的RemoteMap信息。还可当接收到信息发送设备701发送的数据块信息时,更新自身的Map信息。
基于本发明上述实施例提供的用于传输信息的系统,通过信息接收设备在发送传输请求时声明自身所拥有和所请求的信息,收到请求的设备可根据信息拥有情况进行文件传输,同时还能够使一个设备了解到其它设备的信息拥有情况,这使得Web应用能够不依赖于服务器,保证文件在各种场景下都能准确高效地进行传输。
在一个实施例中,信息接收设备702具体在向信息发送设备701发送请求消息后,判断是否在预定时间内接收到信息发送设备发送的数据;若未能在预定时间内接收到信息发送设备发送的数据,则进一步根据自身的RemoteMap信息重新选择数据提供设备,并将请求消息发送给重新选择的数据提供设备,以便从重新选择的数据提供设备获取相应数据块,其中重新选择的数据提供设备具有与第二信息相对应的数据块。
图8为本发明用于传输信息的系统另一实施例的示意图。如图8所示,在执行共享式传输策略时,信息发送设备会将请求分解到其它用户设备,从而使这些用户设备也参与到向信息接收设备的信息传输中。
图9为本发明信息接收设备工作流程一个实施例的示意图。如图9所示,信息接收设备可选择断点续传模式或者利用接收到的FileInfo信息进行选择的模式进行处理。
步骤901,读取文件传输的历史任务。
步骤902,选择需要进行断点续传的任务,然后执行步骤904。
当然,也可选择删除历史任务。
步骤903,当接收到FileInfo信息后,若用户选择接收,则根据文件信息为该文件建立Map信息表。
步骤904,启动任务,并为每个未完成的任务启动一个计时器。
步骤905,若在设定时间内没有接收到数据,则自动根据本地的RemoteMap信息,尝试与拥有相应信息的设备建立连接并发送请求消息。
根据不同的处理结果,对本地RemoteMap信息或Map信息进行相应调整。具体如下:
906a),目的端不可达,则修改本地RemoteMap中相应文件状态为不可用。
906b),目的端拒绝请求,则修改本地RemoteMap中相应文件状态为不可用。
906c),目的端指示文件不存在,则删除本地RemoteMap中相应文件的对应信息。
906d),目的端返回请求消息,则更新本地RemoteMap中的相应信息。
例如,当信息接收设备向目的端发送请求时,目的端也希望从信息接收设备获取信息,在这种情况下目的端会返回请求消息。
906e),目的端返回文件数据,则对文件数据进行存储,并更新本地的Map信息表。
下面对本发明中涉及的两种传输模式进行具体说明。
1)断点续传模式
断点续传是利用浏览器的本地存储(LocalStorage)保存文件传输任务的状态信息,包括Map表和RemoteMap表。Map和RemoteMap都是和文件一一对应的,同一个文件的Map表中只有本地一项,RemoteMap可以有多项。LocalStorage是以Key-Value的形式存储的,Key为文件的哈希值,每次取出要对比文件哈希值有没有发生变化;Value为用户+Map+RemoteMap,采用JSON格式。
a)Map表
·在用户发起文件传输或者接收新的文件传输任务的时候新建
·在接收到文件数据的时候更新
·在用户重新登录时被读取,在前端展示
·在用户选择删除任务的时候删除
b)RemoteMap表
·在收到其他用户发来的FileInfo消息或第一次收到其他用户发来的Request消息的时候新建,收到FileInfo默认该用户拥有完整的文件数据,为做种子Seeder
·在收到后续的Request消息的时候更新
·在启动传输任务的时候向表中的用户发送Request消息
·在发起Request请求之后收到对方不可达或者拒绝请求的时候,将该用户对应项修改为不可用
·在发起Request请求之后收到对方不存在该文件信息的时候,即对方已删除该任务,将该用户对应项删除
·在用户选择删除任务的时候删除整个表
2)共享式传输策略
共享式传输策略应用于多人间传输同一个文件的场景,通过发起请求和转发请求来实现:
a)发起请求
用户在有未完成的传输任务的情况下,启动一个定时器,如果监听到一段时间没有收到数据,就会向RemoteMap表中的用户发Request消息来请求自己所需要的数据。RemoteMap表中可以看出其他用户所拥有的数据块,由于没有实时更新,所以这个信息是不完备的,在对方回消息之后就能更新。请求可分成多个,优先分给拥有块数少的用户;请求中带RemoteMap表中所有用户信息,确保请求不会被转发到这些用户。
b)转发请求
在收到其他用户A发来的Request消息时,首先将A的信息记录到RemoteMap表中,然后取出表中除了A的其他用户,与Request消息中所带的用户列表比较,找出A不知道的拥有该文件且拥有A所需要的数据块的用户B,并将请求分解,把其中一部分分给B由它来传输。A同时能将B写到RemoteMap表中,以后可以直接向B发起请求。
通过实施本发明,可以得到以下有益效果:
1、相比现有的文件传输技术,本发明解决了传统的文件传输的不便利性,将文件传输放在浏览器中实现,不需要用户安装任何软件客户端,只需要在浏览器中访问web应用,浏览器之间就可以建立直连的数据通道;文件传输过程不依赖于服务器,管理控制都在web应用中实现,降低了开发成本,同时给用户带来便捷的用户体验。
2、相比现有的WebRTC提供的文件传输功能,本发明实现了基于浏览器的文件断点续传、共享式文件传输,浏览器之间可以实现智能化控制文件传输任务而不再是简单地点对点传输。本发明能够充分利用所有用户的带宽,提高了文件传输的效率,同时让各个客户端更加了解文件资源在网络中的分布情况,使得web应用中能使用比较完善的文件传输功能。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
本发明的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本发明限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本发明的原理和实际应用,并且使本领域的普通技术人员能够理解本发明从而设计适于特定用途的带有各种修改的各种实施例。
Claims (12)
1.一种用于传输信息的方法,其特征在于,包括:
当接收到信息接收设备发送的请求消息时,从请求消息中提取出第一信息和第二信息,其中第一信息表示信息接收设备已经拥有的数据块信息,第二信息表示信息接收设备请求的数据块信息;
将第一信息写入到本地的RemoteMap信息中;
判断本地是否具有与第二信息相对应的数据块;
若本地具有与第二信息相对应的数据块,则将与第二信息相对应的数据块传输给信息接收设备;
若本地没有与第二信息相对应的数据块,则将相应判断结果发送给信息接收设备,以便信息接收设备根据相应判断结果更新自身的RemoteMap信息;
其中,将第一信息写入到本地的RemoteMap信息中之后,还包括:
判断所述请求消息是否由信息接收设备直接发送;
若所述请求消息由信息接收设备直接发送,则进一步读取本地的RemoteMap信息;
根据读取的RemoteMap信息,判断是否还存在候选信息发送设备,其中候选信息发送设备具有与第二信息相对应的数据块;
若存在候选信息发送设备,则将所述请求消息转发给相应的候选信息发送设备,以便候选信息发送设备对转发的请求消息进行处理;
然后执行判断本地是否具有与第二信息相对应的数据块的步骤。
2.根据权利要求1所述的方法,其特征在于,
若不存在候选信息发送设备,则执行判断本地是否具有与第二信息相对应的数据块的步骤。
3.根据权利要求2所述的方法,其特征在于,
若所述请求消息不是由信息接收设备直接发送,则将本地的Map信息发送给信息接收设备,其中本地的Map信息表示本地已经拥有的数据块信息,以便信息接收设备将接收到的Map信息写入自身的RemoteMap信息;
然后执行判断本地是否具有与第二信息相对应的数据块的步骤。
4.根据权利要求1所述的方法,其特征在于,
将第一信息写入到本地的RemoteMap信息中之后,还包括:
判断信息接收设备是否在发送队列中;
若信息接收设备不在发送队列中,则执行判断所述请求消息是否由信息接收设备直接发送的步骤。
5.根据权利要求1-4中任一项所述的方法,其特征在于,还包括:
读取要发送的文件;
将文件分割为数据块,并将数据块信息写入本地的Map信息中;
与信息接收设备建立数据通道;
将包括数据块信息的文件信息FileInfo发送给信息接收设备;
判断是否接收到信息接收设备发送的确认信息;
若接收到信息接收设备发送的确认信息,则执行当接收到信息接收设备发送的请求消息时,从请求消息中提取出第一信息和第二信息的步骤。
6.一种用于传输信息的信息发送设备,其特征在于,包括接收单元、提取单元、信息写入单元、第一识别单元、发送单元、第二识别单元、信息读取单元和第三识别单元,其中:
接收单元,用于接收信息接收设备发送的请求消息;
提取单元,用于当接收单元接收到信息接收设备发送的请求消息时,从请求消息中提取出第一信息和第二信息,其中第一信息表示信息接收设备已经拥有的数据块信息,第二信息表示信息接收设备请求的数据块信息;
信息写入单元,用于将第一信息写入到本地的RemoteMap信息中;
第一识别单元,用于判断本地是否具有与第二信息相对应的数据块;
发送单元,用于根据第一识别单元的判断结果,若本地具有与第二信息相对应的数据块,则将与第二信息相对应的数据块传输给信息接收设备;若本地没有与第二信息相对应的数据块,则将相应判断结果发送给信息接收设备,以便信息接收设备根据相应判断结果更新自身的RemoteMap信息;还用于根据第三识别单元的判断结果,若存在候选信息发送设备,则将所述请求消息转发给相应的候选信息发送设备,以便候选信息发送设备对转发的请求消息进行处理;然后指示第一识别单元执行判断本地是否具有与第二信息相对应的数据块的操作;
第二识别单元,用于在信息写入单元将第一信息写入到本地的RemoteMap信息中后,判断所述请求消息是否由信息接收设备直接发送;
信息读取单元,用于根据第二识别单元的判断结果,若所述请求消息由信息接收设备直接发送,则进一步读取本地的RemoteMap信息;
第三识别单元,用于根据信息读取单元读取的RemoteMap信息,判断是否还存在候选信息发送设备,其中候选信息发送设备具有与第二信息相对应的数据块。
7.根据权利要求6所述的设备,其特征在于,
第三识别单元还用于在不存在候选信息发送设备时,指示第一识别单元执行判断本地是否具有与第二信息相对应的数据块的操作。
8.根据权利要求7所述的设备,其特征在于,
发送单元还用于根据第二识别单元的判断结果,若所述请求消息不是由信息接收设备直接发送,则将本地的Map信息发送给信息接收设备,其中本地的Map信息表示本地已经拥有的数据块信息,以便信息接收设备将接收到的Map信息写入自身的RemoteMap信息;然后指示第一识别单元执行判断本地是否具有与第二信息相对应的数据块的操作。
9.根据权利要求6所述的设备,其特征在于,还包括第四识别单元,其中:
第四识别单元,用于在信息写入单元将第一信息写入到本地的RemoteMap信息中后,判断信息接收设备是否在发送队列中;若信息接收设备不在发送队列中,则指示第二识别设备执行判断所述请求消息是否由信息接收设备直接发送的操作。
10.根据权利要求6-9中任一项所述的设备,其特征在于,还包括读取单元、文件分割单元、数据通道建立单元和第五识别单元,其中:
读取单元,用于读取要发送的文件;
文件分割单元,用于将文件分割为数据块,并将数据块信息写入本地的Map信息中;
数据通道建立单元,用于与信息接收设备建立数据通道;
发送单元还用于将包括数据块信息的文件信息FileInfo发送给信息接收设备;
第五识别单元,用于判断接收单元是否接收到信息接收设备发送的确认信息;若接收到信息接收设备发送的确认信息,则指示提取单元在接收单元接收到信息接收设备发送的请求消息时,执行从请求消息中提取出第一信息和第二信息的操作。
11.一种用于传输信息的系统,其特征在于,包括信息发送设备和信息接收设备,其中:
信息发送设备,为权利要求6-10中任一项涉及的信息发送设备;
信息接收设备,用于向信息发送设备发送请求信息,其中请求信息中包括第一信息和第二信息,第一信息表示信息接收设备已经拥有的数据块信息,第二信息表示信息接收设备请求的数据块信息;当接收到信息发送设备发送的用于指示信息发送设备没有与第二信息相对应的数据块的指示时,更新自身的RemoteMap信息。
12.根据权利要求11所述的系统,其特征在于,
信息接收设备具体在向信息发送设备发送请求消息后,判断是否在预定时间内接收到信息发送设备发送的数据;若未能在预定时间内接收到信息发送设备发送的数据,则进一步根据自身的RemoteMap信息重新选择数据提供设备,并将请求消息发送给重新选择的数据提供设备,以便从重新选择的数据提供设备获取相应数据块,其中重新选择的数据提供设备具有与第二信息相对应的数据块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510058974.XA CN105991691B (zh) | 2015-02-05 | 2015-02-05 | 用于传输信息的方法、设备和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510058974.XA CN105991691B (zh) | 2015-02-05 | 2015-02-05 | 用于传输信息的方法、设备和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105991691A CN105991691A (zh) | 2016-10-05 |
CN105991691B true CN105991691B (zh) | 2019-04-02 |
Family
ID=57036076
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510058974.XA Active CN105991691B (zh) | 2015-02-05 | 2015-02-05 | 用于传输信息的方法、设备和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105991691B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112202882B (zh) * | 2020-09-29 | 2022-03-25 | 联想(北京)有限公司 | 一种传输方法、客户端及传输系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101119271A (zh) * | 2007-07-05 | 2008-02-06 | 中国科学技术大学 | 一种基于结构化p2p应用服务平台及其实现方法 |
CN101710902A (zh) * | 2009-12-10 | 2010-05-19 | 北京邮电大学 | 一种无结构p2p网络及其数据查询方法和索引更新方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4830889B2 (ja) * | 2007-02-15 | 2011-12-07 | ブラザー工業株式会社 | 情報配信システム、情報配信方法及びノード装置等 |
-
2015
- 2015-02-05 CN CN201510058974.XA patent/CN105991691B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101119271A (zh) * | 2007-07-05 | 2008-02-06 | 中国科学技术大学 | 一种基于结构化p2p应用服务平台及其实现方法 |
CN101710902A (zh) * | 2009-12-10 | 2010-05-19 | 北京邮电大学 | 一种无结构p2p网络及其数据查询方法和索引更新方法 |
Non-Patent Citations (2)
Title |
---|
"An advertisement-based peer-to-peer search algorithm";Wang Jun, P. Gu, and H. Cai.;《Journal of Parallel & Distributed Computing》;20090731;第69卷(第7期);摘要,第639页左栏-642页右栏 |
"P2P资源共享系统中的资源定位研究";王淑玲;《中国博士学位论文全文数据库 信息科技辑》;20121130;正文第19-23页 |
Also Published As
Publication number | Publication date |
---|---|
CN105991691A (zh) | 2016-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2131363B1 (en) | Video editing system, video editing server and communication terminal | |
US9300721B2 (en) | Method, apparatus and system for file transfer based on file directory | |
CN104363247A (zh) | 一种具有免节省应用的节省流量方法及装置 | |
CN103916311A (zh) | 一种信息传输控制方法,装置、及系统 | |
JP2007067725A (ja) | コンテンツ配信方法、コンテンツ配信サーバ、通信端末装置及びコンテンツ配信システム | |
CN110391970A (zh) | 用于通讯应用的消息管理系统、方法、设备和存储介质 | |
WO2021104455A1 (zh) | Cad图纸共享讨论系统及其方法、终端、服务器、电子设备和存储介质 | |
CN104811473A (zh) | 一种创建虚拟非易失性存储介质的方法、系统及管理系统 | |
CN102098233B (zh) | 即时通讯软件中通讯窗口的控制方法及控制系统 | |
CN112769837A (zh) | 基于WebSocket的通信传输方法、装置、设备、系统及存储介质 | |
CN102959905A (zh) | 联系人信息同步的方法、装置及系统 | |
CN102858025A (zh) | 点对点互动操作的方法及设备 | |
CN108882262A (zh) | 设备状态同步方法、系统、智能终端及可读存储介质 | |
CN109150981B (zh) | 区块链网络组网方法、装置、设备及计算机可读存储介质 | |
WO2017071567A1 (zh) | 无线保真WiFi热点的连接控制方法及装置 | |
CN105991691B (zh) | 用于传输信息的方法、设备和系统 | |
CN105208072B (zh) | 虚拟交换机的远程控制方法及装置 | |
CN106572134A (zh) | 一种文件传输方法、装置和系统 | |
CN107087011A (zh) | 一种远程访问的实现方法、装置和系统 | |
CN104243473A (zh) | 一种数据传输的方法以及装置 | |
CN109104472B (zh) | 区块链网络组网方法、装置、设备及计算机可读存储介质 | |
EP3119043B1 (en) | Flow table entry management method and device | |
KR100942694B1 (ko) | P2P(Peer to Peer)를 이용하는 협업 시스템및 그 방법 | |
CN110233791A (zh) | 数据去重方法和装置 | |
WO2016177135A1 (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |