一种基于多播的局域网内文件更新方法及客户端与流程

文档序号:16886675发布日期:2019-02-15 22:42阅读:258来源:国知局
一种基于多播的局域网内文件更新方法及客户端与流程

本发明涉及通信技术领域,尤其涉及一种基于多播的局域网内文件更新方法及客户端。



背景技术:

在软件开发中,基于c/s架构的系统往往需要在各个用户自行在pc端进行软件的更新。有可能出现这样一种情况,局域网内大量用户程序会在一个时间点内向服务器提出新版本请求,更新各个pc端的软件。这样其实存在同一版本的软件需要的更新资源一致,导致重复的向服务端发起对同一资源请求造成带宽以及服务器资源的浪费,在更新时段会有大量的服务端请求并且针对同一版本的请求对带宽和服务端流量以及对服务器的负载提出挑战,需要更多的服务端资源;而在大部分时间,服务端并没有大量访问请求。如果提升服务端运算能力,那么在大部分时间用不到这些运算能力;若不提升服务端运算能力,在刚刚发布新版本时,服务端压力会较大,对带宽也有更高要求,而且同一版本的资源在局域网内没有利用到局域网内的即时传输的速率,丢包率低的特点。所以,需要基于多播的局域网内文件更新方法来改善上述缺点。



技术实现要素:

本发明的实施例提供了一种基于多播的局域网内文件更新方法和客户端,本发明提供了如下方案:

客户端记录待获取的第一分片文件;

客户端向所述局域网内其他客户端发送请求以请求获取所述第一分片文件;

当所述第一分片文件存在于其他客户端已收到的分片文件中,接收所述其他客户端对所述请求的响应。

根据本发明的上述方法,包括:

客户端记录已收到的分片文件;

接收其他客户端发送的获取第二分片文件的请求;

根据所述请求确定所述第二分片文件是否存在于已收到的分片文件中,若存在,则发送对所述请求的响应。

根据本发明的上述方法,包括:

当在预设时间内,未接收到所述其他客户端对所述请求的响应,则所述客户端向服务端请求获取所述第一分片文件。

根据本发明的上述方法,包括:

接收所述服务端的发送缓存区内数据包,其中,所述数据包包含所述第一分片文件的分片数据;

解析所述数据包获取所述分片数据,并将所述分片数据写入接收缓存区。

根据本发明的上述方法,包括:

当所述发送缓存区的数据包发送完毕,客户端检测所述接收缓存区的所述分片数据是否存在丢包数据;

若存在,则重新向所述服务端请求所述丢包数据。

根据本发明的上述方法,包括:

接收所述服务端发送的对所述发送缓冲区内数据包的第一校验结果;其中,所述第一校验结果由所述服务端确定所述发送缓冲区内数据包已成功发送至所述客户端后,对所述发送缓冲区内数据包执行的第一校验;

客户端对所述接收缓冲区所写入的所述分片数据执行的第二校验;

当所述第一校验与所述第二校验匹配时,则确定所述分片数据接收完毕;

根据所述分片数据获取所述第一分片文件。

根据本发明的上述方法,包括:

向所述局域网内所述其他客户端多播所述第一分片文件;

当所述第一分片文件为其他客户端的待获取的第一分片文件;

接收所述其他客户端发送的获取所述第一分片文件的请求;

向所述其他客户端发送对所述请求的响应。

根据本发明的上述方法,包括:

将所述第一分片文件记录到已收到的分片文件中。

根据本发明的另一方面,还提供一种基于多播的客户端,包括:

记录模块:其用于记录待获取的第一分片文件;

发送模块:其用于向所述局域网内其他客户端发送请求以请求获取所述第一分片文件;

接收模块:其用于当所述第一分片文件存在于其他客户端已收到的分片文件中,接收所述其他客户端对所述请求的响应。

根据本发明的另一方面,所述记录模块还用于记录已收到的分片文件;

所述接收模块还用于接收其他客户端发送的获取第二分片文件的请求;

所述发送模块还用于根据所述请求确定所述第二分片文件是否存在于已收到的分片文件中,若存在,则发送对所述请求的响应。

由上述本发明的实施例提供的技术方案可以看出,本发明实施例客户端记录待获取的第一分片文件;客户端向所述局域网内其他客户端发送请求以请求获取所述第一分片文件;当所述第一分片文件存在于其他客户端已收到的分片文件中,接收所述其他客户端对所述请求的响应。通过上述方法,在多播网络中,即使多播用户数量成倍增长,骨干网络中网络带宽也无需增加。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例一提供的应用场景图;

图2为本发明实施例一提供的一种基于多播的局域网内文件更新方法的处理流程图;

图3为本发明实施例一提供的当发生丢包时重传机制的流程图;

图4为本发明实施例二提供的一种客户端的系统模块图。

具体实施方式

为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例做进一步的解释说明,且各个实施例并不构成对本发明实施例的限定。

实施例一

多播是一种数据包传输方式,当有多台主机同时成为一个数据包的接受者时,出于对带宽和cpu负担的考虑,多播成为了一种最佳选择。多播通过把224.0.0.0-239.255.255.255的d类地址作为目的地址,有一台源主机发出目的地址是以上范围多播地址的报文,在网络中,如果有其他主机对于这个组的报文有兴趣的,可以申请加入这个组,并可以接受这个组,而其他不是这个组的成员是无法接受到这个组的报文的。

在多播协议中,在网络设备和所连接的子网需要有一套协议或机制来保证网络设备知道所连接的子网中,有多少台主机属于一个特定的组。多播,是把从一个由源产生得报文发送给一组目的。在一个特定的路由器上,一个包得多个备份可能从多个接口上发出。如果有环路得存在,那么一个或多个包会返回到其输入的接口,而且这个包也会经复制发到其他的端口上。这一结果可能导致多播风暴,这个包不断在路由器与交换机间复制,直到ttl减为0。由于这是个复制过程,它的危害会比单播环路严重的多,所以所有的多播路由器必须知道多播包的源,并且需要保证多播包不能从源接口发出。所以他必须知道哪些是上游接口和下游接口,可以分辨出数据包的流向。如果在不是在源的上游接口收到数据包,就会把它丢弃掉。而多播路由协议必须关心到源的最短路径,或者说它关心到源的上游接口。同时,除了关心上游接口,但是在转发的时候,不能把数据包从除了上游接口的其他接口发送出去实现。

组员可以在多播会话存活的时候,加入或退出一个组,而与其相连的路由器必须动态的根据直连子网内组员的存在或退出来决定要加入或剪除多播树的树枝。我们通过广播/剪除模式来去除多播树上的没有多播成员的树枝。也就是说,它是通过先把网际网络上的所有路由器都加入到多播树上,然后由每个路由器通过igmp(internetgroupmanagementprotocol,互联网组管理协议)协议来查询是否有组员在直连的子网上,如果没有,就发出一条剪除消息,来剪除多余的树枝。

在本实施例中,在局域网内有多个客户端,如附图1所示,服务器对更新的文件进行分片,在客户端上,每个客户端记录本客户端待获取的分片文件,具体地,可以将待获取的分片文件建立一个需求列表。

当客户端请求获取所记录的待获取文件时,先向局域网内的其他客户端发请求,若得到其他客户端的回应,则不必在向服务端发请求;

如果没有得到其他客户端的回应,则再向服务端发起请求。

下面结合本发明的实施例提供的一种基于多播的局域网内文件更新方法的处理流程如图2所示,包括如下的处理步骤:步骤11、客户端记录待获取的第一分片文件;

步骤12、客户端向所述局域网内其他客户端发送请求以请求获取所述第一分片文件;

步骤13、当所述第一分片文件存在于其他客户端已收到的分片文件中,接收所述其他客户端对所述请求的响应。

更进一步地,当所述第一分片文件存在于其他客户端已收到的分片文件中,其他客户端将对所接收的请求作出响应。

更进一步地,客户端记录已收到的分片文件;

接收其他客户端发送的获取第二分片文件的请求;

根据所述请求确定所述第二分片文件是否存在于已收到的分片文件中,若存在,则发送对所述请求的响应。

当在预设时间内,未接收到所述其他客户端对所述请求的响应,则所述客户端向服务端请求获取所述第一分片文件。

更进一步地,所述客户端向服务端请求获取所述第一分片文件,包括:

接收所述服务端的发送缓存区内数据包,其中,所述数据包包含所述第一分片文件的分片数据;

解析所述数据包获取所述分片数据,并将所述分片数据写入接收缓存区。

当所述发送缓存区的数据包发送完毕,客户端检测所述接收缓存区的所述分片数据是否存在丢包数据;

若存在,则重新向所述服务端请求所述丢包数据。

在本实施例中,优选地,客户端在数据传输开始前,首先建立接收缓存区,用来映射同服务端大小一样的发送缓存区。客户端时刻检测接收到的udp数据包状态,本实施例中udp数据包包含第一分片文件的分片数据;把udp数据包中包含的数据内容写入接收缓存区,并更新接收队列。随着发送缓冲区内容发送完毕,客户端需要及时意识到缓冲区中哪些数据没有被更新过,据此建立自己的丢包队列。然后,客户端判断自己当前的通信权限,向服务端请求所丢包。如果被赋予了通信权限,则重新请求丢包队列中的各个数据包,再次更新丢包队列,直到完全接收所有数据包为止。这个丢包过程如图3所示。

接收所述服务端发送的对所述发送缓冲区内数据包的第一校验结果;其中,所述第一校验结果由所述服务端确定所述发送缓冲区内数据包已成功发送至所述客户端后,对所述发送缓冲区内数据包执行的第一校验;

客户端对所述接收缓冲区所写入的所述分片数据执行的第二校验;

当所述第一校验与所述第二校验匹配时,则确定所述分片数据接收完毕;

根据所述分片数据获取所述第一分片文件。

在本实施例中,当服务端端判断本轮缓冲区数据包已经成功地发送到所有客户端时,服务端执行缓冲区内存数据校验,并将结果发送给所有客户端。客户端通过tcp数据包类型判断接收到的是否是a5t本轮缓冲区中的校验码,如果是则取出校验数据并且和自己计算出的校验结果进行比对,当比对结果一致时完成校验同时完成本轮传输;不一致时则向服务端报告错误并请求重传整个缓冲区。本实施例中优选地使用crc循环冗余校验码进行校验。

在客户端获取所述第一分片文件以后,优选地,向所述局域网内所述其他客户端多播所述第一分片文件;

当所述第一分片文件为其他客户端的待获取的第一分片文件;接收所述其他客户端发送的获取所述第一分片文件的请求;向所述其他客户端发送对所述请求的响应。

在客户端获取所述第一分片文件以后,优选地,将所述第一分片文件记录到已收到的分片文件中。

实施例二

该实施例提供了一种基于多播的客户端,其具体实现结构如图4所示,具体可以包括如下的模块:

记录模块41:其用于记录待获取的第一分片文件;

发送模块42:其用于向所述局域网内其他客户端发送请求以请求获取所述第一分片文件;

接收模块43:其用于当所述第一分片文件存在于其他客户端已收到的分片文件中,接收所述其他客户端对所述请求的响应。

所述记录模块41还用于记录已收到的分片文件;

所述接收模块43还用于接收其他客户端发送的获取第二分片文件的请求;

所述发送模块42还用于根据所述请求确定所述第二分片文件是否存在于已收到的分片文件中,若存在,则发送对所述请求的响应。

用本发明实施例的客户端进行基于多播的局域网内文件更新的具体过程与前述方法实施例类似,此处不再赘述。

综上所述,本发明实施例通过由上述本发明的实施例提供的技术方案可以看出,本发明实施例客户端记录待获取的第一分片文件;客户端向所述局域网内其他客户端发送请求以请求获取所述第一分片文件;当所述第一分片文件存在于其他客户端已收到的分片文件中,接收所述其他客户端对所述请求的响应。通过上述方法,在多播网络中,即使多播用户数量成倍增长,骨干网络中网络带宽也无需增加。

本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1