软件升级指令分发方法、通信服务器及终端设备的制作方法

文档序号:6640730阅读:177来源:国知局
软件升级指令分发方法、通信服务器及终端设备的制作方法
【专利摘要】本发明提供一种软件升级指令分发方法、通信服务器及终端设备。上述方法包括:建立与至少一个终端设备的长连接;向所述终端设备发送包括软件版本信息的消息,以使所述终端设备根据所述软件版本信息判断是否需要进行软件升级,若是则以多播的通信方式从升级服务器处获取软件升级数据。上述通信服务器包括:建立单元,用于建立与至少一个终端设备的长连接;发送单元,用于向所述终端设备发送包括软件版本信息的消息,以使所述终端设备根据所述软件版本信息判断是否需要进行软件升级,若是则以多播的通信方式从升级服务器处获取软件升级数据。本发明可以解决软件升级指令分发延迟大且需要占用控制中心大量资源问题。
【专利说明】软件升级指令分发方法、通信服务器及终端设备

【技术领域】
[0001]本发明涉及网络技术,具体涉及一种软件升级指令分发方法、通信服务器及终端设备。

【背景技术】
[0002]现有的网络架构中,控制中心常常要向多个终端设备分发各种各样的指令,由于该场景属于“一点对多点”的通讯场景,因而指令的分发通常按照下述基于短连接方式进行:
[0003]控制中心生成对应于一个或多个终端设备的指令消息,建立与上述一个或多个终端设备的短连接,将指令消息藉由短连接发送给上述一个或多个终端设备,终端设备接收到指令消息并校验无误后就关闭这一短连接。
[0004]但是,控制中心通常还需要与众多其他终端或服务器建立连接,一方面频繁地建立和关闭短连接会占用控制中心的大量可用系统资源和通信资源,另一方面由于建立短连接的过程会耗费一些时间,因而会增大指令的发出与执行之间在时间上的延迟,不利于整个网络的持续尚效运tx。
[0005]比如,在软件升级指令的分发流程中,现有技术中的控制中心需要基于短连接的方式向所有终端发送包括软件升级指令的消息,一方面这给控制中心带来了巨大的工作负担,另一方面由于短连接的建立需要时间,因而控制中心很难在很短的时间内完成向所有终端的消息发送任务。


【发明内容】

[0006]针对现有技术中的缺陷,本发明提供一种软件升级指令分发方法、通信服务器及终端设备,解决了软件升级指令分发延迟大且需要占用控制中心大量资源问题。
[0007]第一方面,本发明提供了一种通信服务器,包括:
[0008]建立单元,用于建立与至少一个终端设备的长连接;
[0009]发送单元,用于向所述终端设备发送包括软件版本信息的消息,以使所述终端设备根据所述软件版本信息判断是否需要进行软件升级,若是则以多播的通信方式从升级服务器处获取软件升级数据。
[0010]可选地,所述发送单元进一步用于定期向所述终端设备发送包括软件版本信息的心跳数据包,以使所述终端设备根据所述软件版本信息判断是否需要进行软件升级,若是则以多播的通信方式从升级服务器处获取软件升级数据。
[0011]第二方面,本发明还提供了一种终端设备,包括:
[0012]建立单元,用于与通信服务器的长连接;
[0013]接收单元,用于接收来自所述通信服务器的包括软件版本信息的消息;
[0014]判断单元,用于根据所述接收单元接收到的所述软件版本信息判断是否需要进行软件升级;
[0015]执行单元,用于在判断单元判定需要进行软件升级时以多播的通信方式从升级服务器处获取软件升级数据。
[0016]可选地,所述执行单元包括:
[0017]发生模块,用于以多播的通信方式从升级服务器处获取软件升级数据;
[0018]接收模块,用于接收升级服务器以多播的通信方式发送的多个数据单元,所述数据单元为所述升级服务器生成的与所述软件升级请求消息中的所述软件升级数据的标识对应的数据单元;
[0019]处理模块,用于根据接收到的所述多个数据单元得到所述软件升级数据。
[0020]可选地,所述处理模块进一步用于在接收到的数据单元的数目达到预设值时,利用前向纠错编码算法根据接收到的多个数据单元得到所述软件升级数据;所述数据单元包括升级服务器由所述软件升级数据分得的多个原始数据单元和升级服务器利用所述前向纠错编码算法根据所述原始数据单元得到的多个校验数据单元。
[0021]可选地,所述处理模块还用于在根据接收到的多个数据单元不能得到正确的软件升级数据时,执行以下操作中的一项或多项:
[0022]利用前向纠错编码算法对得到的软件升级数据进行纠错;
[0023]抛弃已经接收到的所述多个数据单元,并继续接收升级服务器以多播的通信方式发送的多个数据单元;
[0024]向升级服务器或其他终端设备发送对应的数据单元传输请求,以使升级服务器或其他终端设备返回与所述软件升级数据对应的数据单元。
[0025]可选地,所述接收单元进一步用于接收所述通信服务器定期发送的包括软件版本信息的心跳数据包。
[0026]第三方面,本发明还提供了一种软件升级指令分发方法,包括:
[0027]建立与至少一个终端设备的长连接;
[0028]向所述终端设备发送包括软件版本信息的消息,以使所述终端设备根据所述软件版本信息判断是否需要进行软件升级,若是则以多播的通信方式从升级服务器处获取软件升级数据。
[0029]可选地,所述向所述终端设备发送包括软件版本信息的消息,以使所述终端设备根据所述软件版本信息判断是否需要进行软件升级,若是则以多播的通信方式从升级服务器处获取软件升级数据,包括:
[0030]定期向所述终端设备发送包括软件版本信息的心跳数据包,以使所述终端设备根据所述软件版本信息判断是否需要进行软件升级,若是则以多播的通信方式从升级服务器处获取软件升级数据。
[0031]第四方面,本发明还提供了一种软件升级指令分发方法,包括:
[0032]建立与通信服务器的长连接;
[0033]接收来自所述通信服务器的包括软件版本信息的消息;
[0034]根据所述软件版本信息判断是否需要进行软件升级;
[0035]若是,则以多播的通信方式从升级服务器处获取软件升级数据。
[0036]可选地,所述以多播的通信方式从升级服务器处获取软件升级数据,包括:
[0037]向升级服务器发送包括待获取的软件升级数据的标识的软件升级请求消息;
[0038]接收升级服务器以多播的通信方式发送的多个数据单元,所述数据单元为所述升级服务器生成的与所述软件升级请求消息中的所述软件升级数据的标识对应的数据单元;
[0039]根据接收到的所述多个数据单元得到所述软件升级数据。
[0040]可选地,所述根据接收到的所述多个数据单元得到所述软件升级数据,包括:
[0041]当接收到的数据单元的数目达到预设值时,利用前向纠错编码算法根据接收到的多个数据单元得到所述软件升级数据;所述数据单元包括升级服务器由所述软件升级数据分得的多个原始数据单元和升级服务器利用所述前向纠错编码算法根据所述原始数据单元得到的多个校验数据单元。
[0042]可选地,所述根据接收到的所述多个数据单元得到所述软件升级数据,还包括:
[0043]当根据接收到的多个数据单元不能得到正确的软件升级数据时,执行以下操作中的一项或多项:
[0044]利用前向纠错编码算法对得到的软件升级数据进行纠错;
[0045]抛弃已经接收到的所述多个数据单元,并继续接收升级服务器以多播的通信方式发送的多个数据单元;
[0046]向升级服务器或其他终端设备发送对应的数据单元传输请求,以使升级服务器或其他终端设备返回与所述软件升级数据对应的数据单元。
[0047]可选地,接收来自所述通信服务器的包括软件版本信息的消息,包括:
[0048]接收所述通信服务器定期发送的包括软件版本信息的心跳数据包。
[0049]由上述技术方案可知,本发明可以通过使通信服务器与终端设备建立长连接来使通信服务器代替控制中心执行软件升级指令的分发,从而控制中心不需要与大量终端设备频繁地建立和关闭短连接,因而软件升级指令分发不会占用控制中心的大量资源;而且长连接不会频繁的建立和关闭,可以保障指令迅速地分发到每一终端,减小指令的发出与执行之间在时间上的延迟。所以,本发明可以解决软件升级指令分发延迟大且需要占用控制中心大量资源问题,执行效率高且可操作性强。

【专利附图】

【附图说明】
[0050]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单的介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0051]图1是本发明一个实施例中一种软件升级指令分发方法的步骤流程示意图;
[0052]图2是本发明一实施例中一种软件升级指令分发方法的步骤流程示意图;
[0053]图3是本发明一实施例中一种以多播的通信方式从升级服务器处获取软件升级数据的步骤流程示意图;
[0054]图4是本发明一个实施例中一种通信服务器的结构框图;
[0055]图5是本发明一个实施例中一种移动终端的结构框图;
[0056]图6是本发明一个实施例中一种执行单元的结构框图。

【具体实施方式】
[0057]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0058]需要说明的是,本文中的控制中心指的是用于生成对所属网络中任一终端设备的控制指令的装置或者装置集合;本文中的通信服务器指的是用于向至少一个终端设备分发指令的装置或装置集合;本文中的终端设备指的是处于控制中心的所属网络中通过接收并执行来自控制中心指令的设备。
[0059]比如,在本发明的一个实施例中,上述控制中心具体是位于局域网网络中心的控制服务器,上述通信服务器具体是同一网络中与控制服务器相连的具体用于软件升级指令分发的小型服务器,上述终端设备具体是局域网中的多台个人计算机设备。
[0060]再如,在本发明的另一实施例中,上述控制中心具体是位于互联网中的多个服务器的集合,上述通信服务器具体是多个服务器的集合中具体用于软件升级指令分发的一个服务器,而上述终端设备具体是任意一个受控制中心通过指令控制的设备,可以是基于任意操作系统的台式机、笔记本电脑、平板电脑、智能手机、个人数字助理、音乐播放设备、游戏设备等。
[0061]另外,本文中的短连接指的是通讯双方有数据交互时,就建立一个连接,数据发送完成后,则断开此连接,即每次连接只完成一项业务的发送。而与之相应,长连接指在一个连接上可以连续发送多个数据包,在连接保持期间,如果没有数据包发送,需要双方发链路检测包。在现有技术中,长连接多用于单点对单点而且连接数不多的通信场景,而短连接多用于一点对多点而且连接数很多的通信场景。其原因主要在于短连接和长连接在建立方式和传输方式的区别。
[0062]具体以一个简单的TCP (Transmiss1n Control Protocol,传输控制协议)短连接为例,终端设备向服务器发起连接请求,服务器接到请求,然后双方建立连接。终端设备向服务器发送消息,服务器回应终端设备,然后一次读写就完成了,这时候双方任何一个都可以发起关闭连接操作,不过一般都是终端设备先发起关闭连接操作,主要因为一般的服务器不会回复完终端设备后立即关闭连接,当然不排除有特殊的情况。从上面的描述可以看出,短连接一般只会在终端设备和服务器间传递一次读写操作。
[0063]从上述短连接的示例过程中可以看出,如果控制中心与终端设备之间通过短连接方式传递指令,那么每发送一个指令都需要建立一次短连接,且每发送完一个指令后都需要关闭一次短连接。面对数量庞大的终端设备以及通常在时间上较为集中的软件升级指令分发流程,控制中心需要在短时间内建立数量巨大的短连接,并将每一份指令都发送给对应的终端设备,然后在发送完毕后关闭短连接。可见,这一过程对控制中心的可用系统资源和通信资源的需求都是巨大的,很容易造成下行带宽的拥堵;同时由于建立连接需要花费一定时间,因而指令的分发流程会相对耗费时间。
[0064]针对上述问题,本发明提供了一种软件升级指令分发方法,参见图1所示出的本发明一个实施例中一种软件升级指令分发方法的步骤流程示意图,该方法包括:
[0065]步骤101:建立与至少一个终端设备的长连接;
[0066]步骤102:向所述终端设备发送包括软件版本信息的消息,以使所述终端设备根据所述软件版本信息判断是否需要进行软件升级,若是则以多播的通信方式从升级服务器处获取软件升级数据。
[0067]需要说明的是,本发明实施例所提供的方法的执行主体对应于上述“通信服务器”,如上文所述,通信服务器是用于向至少一个终端设备分发指令的装置或装置集合,本发明不限定其具体的实现方式。
[0068]具体地,上述步骤101中,与至少一个终端设备的长连接建立过程可以具体包括与终端设备之间的多次握手数据包的交互。上述步骤102中,由于终端设备可以获取到自身的软件版本信息,因而可以与接收到的软件版本信息进行比较,从而确定是否需要进行软件升级。例如,终端设备接收到的软件版本信息中的版本号为“1.6.8”,而若终端设备自身的软件版本信息中的版本号为“1.5.0”,与“1.6.8”可知自身的对应软件版本较低时,终端设备可以通过多播的通信方式从升级服务器处获取软件升级数据,以执行软件升级指令。另一方面,若终端设备自身的对应软件的版本信息为“1.6.8”,代表该软件已经是最新的版本了,那么终端设备就可以忽略这一软件升级指令。
[0069]可见,由于采用长连接方式进行指令的分发,本发明实施例可以通过使通信服务器与终端设备建立长连接来使通信服务器代替控制中心执行软件升级指令的分发,从而控制中心不需要与大量终端设备频繁地建立和关闭短连接,因而软件升级指令分发不会占用控制中心的大量资源;而且长连接不会频繁的建立和关闭,可以保障指令迅速地分发到每一终端,减小指令的发出与执行之间在时间上的延迟。所以,本发明实施例可以解决软件升级指令分发延迟大且需要占用控制中心大量资源问题,执行效率高且可操作性强。
[0070]以TCP长连接为例,长连接的建立及消息收发过程可以按照下述方式进行:终端设备向通信服务器发起连接,通信服务器接受终端设备连接,双方建立连接。终端设备与通信服务器完成一次读写之后,它们之间的连接并不会主动关闭,后续的读写操作会继续使用这个长连接。而且,为了维护TCP长连接,通信服务器还会向终端设备发送“心跳数据包”来确定终端设备是否还保持着这一 TCP长连接。更具体地,其可以通过以下过程实现:
[0071]如果一个给定的TCP长连接在两小时内没有任何的动作,则通信服务器就向终端设备发一个心跳数据包,那么终端设备可能会有以下情况:
[0072]第一种,终端设备依然正常运行,并从通信服务器可达。终端设备的TCP响应正常,而通信服务器也知道对方是正常的,通信服务器在两小时后将定时器复位。
[0073]第二种,终端设备已经崩溃,并且关闭或者正在重新启动。在任何一种情况下,终端设备的TCP长连接都没有响应。服务端将不能收到对心跳数据包的响应,并在等待75秒后判定超时。通信服务器总共发送10个同样的心跳数据包,每个间隔75秒。如果通信服务器没有收到一个响应,它就认为终端设备已经关闭并终止TCP长连接。
[0074]第三种,终端设备崩溃并已经重新启动。通信服务器将收到一个对心跳数据包的响应,这个响应是会使得通信服务器终止这个TCP长连接。
[0075]第四种,终端设备机正常运行,但是终端设备到通信服务器的通信是中断的,因而类似于上述第二种情况,通信服务器会认为终端设备已经关闭并终止TCP长连接。
[0076]因此,基于长连接的心跳数据包发送机制,可以将软件升级指令作为心跳数据包的一部分来进行发送。即,上述步骤102:向所述终端设备发送包括软件版本信息的消息,以使所述终端设备根据所述软件版本信息判断是否需要进行软件升级,若是则以多播的通信方式从升级服务器处获取软件升级数据,可以具体包括图中未示出的步骤:
[0077]定期向所述终端设备发送包括软件版本信息的心跳数据包,以使所述终端设备根据所述软件版本信息判断是否需要进行软件升级,若是则以多播的通信方式从升级服务器处获取软件升级数据。
[0078]从而,每一次终端设备接收到包括软件版本信息的心跳数据包时,都可以进行是否需要进行软件升级的判断,相比较单独地进行包括软件版本信息的消息的发送,可以进一步地减小通信服务器的工作负担。
[0079]另外,在本发明实施例中通信服务器可以独立于控制中心之外统一执行向至少一个终端设备的软件升级指令分发过程。也就是说,控制中心只需要建立与通信服务器的实时通信,就可以使软件升级指令快速地下发至每一终端设备,而自身不需要处理软件升级指令分发的流程,因而可以更大限度地执行其他控制操作流程。
[0080]而且,正是由于终端设备以多播的通信方式来获取软件升级数据,因而升级服务器可以通过变更多播组内的终端设备组成,就可以方便地进行同一份软件升级数据的发送,配合长连接分发软件升级指令的方式的特点可以在控制中心更新软件版本后使多个终端设备划分为同一个多播组,从而共同从升级服务器中获取软件升级数据,有利于降低网络负荷并提高数据传输效率。
[0081 ] 当然,在本发明的其他实施例中,通信服务器也可以包含于控制中心当中,其具体流程可以用与上述技术方案相同的方式进行,在此不再赘述。
[0082]基于同样的发明构思,本发明实施例提供了一种软件升级指令分发方法,参见图2所示出的本发明一个实施例中一种软件升级指令分发方法的步骤流程示意图,该方法包括:
[0083]步骤201:建立与通信服务器的长连接;
[0084]步骤202:接收来自所述通信服务器的包括软件版本信息的消息;
[0085]步骤203:根据所述软件版本信息判断是否需要进行软件升级;
[0086]步骤204:若是,则以多播的通信方式从升级服务器处获取软件升级数据。
[0087]其中,本发明实施例所提供的方法以“终端设备”为主体,可以实现上文中任意一种软件升级指令分发的流程,因而具有相应的技术特征,并可以解决相同的技术问题,达到相同的技术效果。
[0088]比如,对应于上述采用心跳数据包发送软件版本信息的示例,上述步骤202:接收来自所述通信服务器的包括软件版本信息的消息,可以具体包括图中未示出的步骤:
[0089]接收所述通信服务器定期发送的包括软件版本信息的心跳数据包。
[0090]当然,在接收到心跳数据包后,终端设备就可以进行是否需要进行软件更新的判断,还可以在响应中反馈其判断结果,从而使控制中心可以快速地收集到所有终端设备的软件升级情况。
[0091]更具体地,上述步骤204中以多播的通信方式从升级服务器处获取软件升级数据可以具体包括如图3所示的下述步骤:
[0092]步骤301:向升级服务器发送包括待获取的软件升级数据的标识的软件升级请求消息;
[0093]步骤302:接收升级服务器以多播的通信方式发送的多个数据单元,所述数据单元为所述升级服务器生成的与所述软件升级请求消息中的所述软件升级数据的标识对应的数据单元;
[0094]步骤303:根据接收到的所述多个数据单元得到所述软件升级数据。
[0095]这里,多播的通信协议一般都是基于用户数据包协议(User Datagram Protocol,UDP)的,可以具体为下述协议中的一种或者多种:远程矢量多点传送路由协议(DistanceVector Multicast Routing Protocol,DVMRP)、组播开放最短路径优先协议(MulticastOpen Shortest Path First,MOSPF),密集模式独立组播协议(Protocol-1ndependentMulticast-Dense Mode,PIM-DM)、基准树协议(Core Based Trees,CBT)和稀疏模式独立组播协议(Protocol-1ndependent Multicast-Sparse Mode, PIM-SM)等。
[0096]采用上述技术方案,升级服务器只需要将大小可以达到几十GB的软件升级数据以多播的通信方式发送给多个终端,其中一种情况可以是升级服务器根据软件升级数据拆生成多个数据单元后分给多个网络节点,使得网络节点复制数据后再与其他网络节点互通有无,使得数据单元可以在通信网络中呈网状扩散,且整个通信链路中只存在一份软件升级数据的数据量,因而可以充分利用网络中的通信资源,避免了点对点传输方式所造成的网络拥塞,提高了软件升级数据的传输效率。
[0097]进一步地,上述步骤303:根据接收到的所述多个数据单元得到所述软件升级数据,还可以具体包括未在图中示出的下述步骤:
[0098]当接收到的数据单元的数目达到预设值时,利用前向纠错编码算法根据接收到的多个数据单元得到所述软件升级数据;所述数据单元包括升级服务器由所述软件升级数据分得的多个原始数据单元和升级服务器利用所述前向纠错编码算法根据所述原始数据单元得到的多个校验数据单元。
[0099]上述前向纠错(Forward Error Correct1n,FEC)编码算法可以说是一种增加传输数据冗余度来提高传输可靠性的算法。通过该算法,终端设备不需要接收到升级服务器所发送的所有数据单元,也可以还原出升级服务器所发送的全部原始数据,即通信过程中可以允许丢包。同时,接收到的多个数据单元还可以用于对接收到的原始数据进行纠错,以进一步提高传输过程的可靠性。
[0100]另一方面,为了保障数据传输的可靠性,上述步骤303:根据接收到的所述多个数据单元得到所述软件升级数据,还可以包括图中未示出的下述步骤:
[0101]当根据接收到的多个数据单元不能得到正确的软件升级数据时,执行以下操作中的一项或多项:
[0102]利用前向纠错编码算法对得到的软件升级数据进行纠错;
[0103]抛弃已经接收到的所述多个数据单元,并继续接收升级服务器以多播的通信方式发送的多个数据单元;
[0104]向升级服务器或其他终端设备发送对应的数据单元传输请求,以使升级服务器或其他终端设备返回与所述软件升级数据对应的数据单元。
[0105]具体地,基于上述前向纠错(Forward Error Correct1n,FEC)编码算法,可以在不能得到正确的软件升级数据时对其进行纠错处理,比如利用有冗余的多个数据单元来依照前向纠错编码算法进行纠错,或者使用多种多个数据单元的组合方式来尝试获取正确的软件升级数据。或者,终端设备也可以抛弃不能得到正确软件升级数据的数据单元,而继续接收服务器反复发送的多个数据单元,从而同样可以使得出于各种原因导致的数据单元丢失或错误均可以在下一轮的数据单元发送过程中重新接收,以进一步保障通信的可靠性。
[0106]在上述两种方式均失效的情况下,也可以向升级服务器或其他终端设备发送对应的数据单元传输请求,一方面可以通过收集缺失的数据单元来获得软件升级数据,另一方面也可以重新以其他传输方式来获取软件升级数据(在上述方法的传输的可靠性可以得到保证时,这种情况发生的概率会相当小,因而在总体上不会大幅度增加通信网络的负荷)。
[0107]在本发明一个较佳的实施例中,以多播的通信方式从升级服务器处获取软件升级数据的具体流程如下所述(设软件升级数据文件以及作为传输对象的多个终端设备的IP地址均是给定的):
[0108]在文件层次上,升级服务器对于软件升级数据文件(或者软件升级数据文件目录),会先进行分片处理,比如将所有软件升级数据文件分为多个大小相同的文件片段(当然有个别文件片段的大小可能会不同,其可以通过如添加空白数据的常用手段进行规范化或者特殊处理,下文的类似情况均不再赘述)。为了保障通信的可靠性,可以在文件片段中添加校验信息,比如根据文件片段生成的文件完整性校验编码和循环冗余校验编码,以生成文件层次上的文件传输单元。对于每个终端设备而言,在得到每个文件传输单元后,可以利用校验信息校验得到的文件片段与原始文件片段的一致性。若存在不一致的情况,可以抛弃该文件传输单元并重新传输;若校验可以顺利通过,则将得到的文件片段存储,待得到所有文件片段后再通过分片的逆向操作得到原始的软件升级数据文件。以上则为升级与终端设备在文件层次上的处理流程。
[0109]在数据层次上,升级服务器将每一文件传输单元分为多个大小较小的、适于前向纠错编码的数据块,比如说大小均为64KB的多个数据块。对于每一数据块,再根据前向纠错编码生成多个相同大小的原始数据单元和校验数据单元,比如64个1024字节的原始数据单元和64个1024字节的纠错数据单元(可以使原始数据单元的个数与校验数据单元的个数相同以得到较佳的文件传输可靠性和较小的数据冗余度)。在进行前向纠错编码时,所基于的编码标准可以选用Reed-Solomon编码标准。基于前向纠错编码的原理,对于上述总数为128个的数据单元,接收数据单元的终端设备可以容忍最多64个原始数据单元或校验数据单元同时丢失,即接收到这些数据单元的终端设备可以通过对应的数据还原算法根据总数至少为64的原始数据单元和校验数据单元得到原始的数据块。以上则为升级服务器与终端设备在数据层次上的处理流程。
[0110]在传输层次上,升级服务器以IP多播的通信方式将与每一数据块对应的多个数据单元传输给终端设备(位于通信链路上的每一数据包包括加了协议信息头的数据单元),终端设备则通过接收接收到的数据单元为还原数据块做准备。
[0111]具体的,升级服务器可以将原始数据单元或校验数据单元作为通信协议头的负载同时发送给指定的多个终端设备,并在发送完一轮后紧接着发送下一轮,无限循环下去直到升级服务器主动终止这一过程。即:当发送完一个数据单元后紧接着发送下一个数据单元直到整个数据块发送完毕,当发送完一个数据块的所有数据单元后紧接着发送下一个数据块直到整个文件传输单元发送完毕,当发送完一个文件传输单元的所有数据块后可以再重新发送这一文件传输单元中的所有数据块,直到升级服务器主动终止这一过程。当然,上述IP多播的通信协议可以有很多种,比如异步分层编码协议等等,但这些协议都满足同一个基本特征:通信过程的整个链路上只存在一份数据,而不需要同时传输多份相同的数据。
[0112]同时,升级服务器可以采用如下方式控制终端设备的文件传输过程:在通信协议头中加入“正在发送”、“即将停止”和“停止发送”三类标识,分别代表“当前文件传输单元是新发送的,终端设备应当接收”、“当前文件传输单元已经发送完毕,若终端设备已经收全则可以停止接收”和“终端设备应立即停止接收”。升级服务器在发送文件传输单元时会先给数据单元添加“正在发送”的标识;在已经发送完该文件传输单元的所有数据块的所有数据单元之后、在停止发送数据单元之前,给数据单元添加“即将停止”的标识;并在最终停止发送时,给数据单元添加“停止发送”的标识。相应地,若终端设备接收到带有“正在发送”标识的数据单元,则按照通信协议头中的信息将接收到的数据单元存放到与该数据单元的标识对应的位置,并在接收到足够的数据单元后通过数据还原算法来还原数据块;若终端设备接收到带有“即将停止”标识的数据单元,则检测是否已经得到了该文件传输单元中的所有数据块,若是则停止接收;若终端设备接收到带有“停止发送”标识的数据单元时,则立刻停止接收并进行意外处理(例如向附近的通信节点或升级服务器请求重新传输没有成功接收的文件传输单元)。
[0113]以上为升级服务器与终端设备在传输层次上的处理流程。
[0114]可见,本发明实施例的技术方案分别在文件层次、数据层次和传输层次上说明了上述方法的【具体实施方式】,使得整个通信链路上只存在至多几份同样的数据,因而大大减少了软件升级数据分发过程对通信资源的占用,降低了通信网络的负荷。
[0115]基于同样的发明构思,本发明实施例提供了一种通信服务器,参见图4所示出的结构框图,该通信服务器包括:
[0116]建立单元41,用于建立与至少一个终端设备的长连接;
[0117]发送单元42,用于向所述终端设备发送包括软件版本信息的消息,以使所述终端设备根据所述软件版本信息判断是否需要进行软件升级,若是则以多播的通信方式从升级服务器处获取软件升级数据。
[0118]可见,由于采用长连接方式进行指令的分发,本发明实施例可以通过使通信服务器与终端设备建立长连接来使通信服务器代替控制中心执行软件升级指令的分发,从而控制中心不需要与大量终端设备频繁地建立和关闭短连接,因而软件升级指令分发不会占用控制中心的大量资源;而且长连接不会频繁的建立和关闭,可以保障指令迅速地分发到每一终端,减小指令的发出与执行之间在时间上的延迟。所以,本发明实施例可以解决软件升级指令分发延迟大且需要占用控制中心大量资源问题,执行效率高且可操作性强。
[0119]此外,本实施例的通信服务器可执行前述的图1所示的方法实施例中的流程,本实施例不在此进行详述。
[0120]另外,对应于上述心跳数据包的例子,所述发送单元可以进一步用于定期向所述终端设备发送包括软件版本信息的心跳数据包,以使所述终端设备根据所述软件版本信息判断是否需要进行软件升级,若是则以多播的通信方式从升级服务器处获取软件升级数据。
[0121]从而,每一次终端设备接收到包括软件版本信息的心跳数据包时,都可以进行是否需要进行软件升级的判断,相比较单独地进行包括软件版本信息的消息的发送,可以进一步地减小通信服务器的工作负担。
[0122]基于同样的发明构思,本发明还提供了一种终端设备,参见图5所示出的结构框图,该终端设备包括:
[0123]建立单元51,用于与通信服务器的长连接;
[0124]接收单元52,用于接收来自所述通信服务器的包括软件版本信息的消息;
[0125]判断单元53,用于根据所述接收单元52接收到的所述软件版本信息判断是否需要进行软件升级;
[0126]执行单元54,用于在判断单元53判定需要进行软件升级时以多播的通信方式从升级服务器处获取软件升级数据。
[0127]其中,本发明实施例所提供的终端设备可以与上述任意一种通信服务器通过交互来完成软件升级指令的分发,并可执行前述的图2所示的方法实施例中的流程,本实施例不在此进行详述。
[0128]在本发明的一个实施例中,上述执行单元54可以具体包括如图6中所示的下述结构:
[0129]发生模块61,用于以多播的通信方式从升级服务器处获取软件升级数据;
[0130]接收模块62,用于接收升级服务器以多播的通信方式发送的多个数据单元,所述数据单元为所述升级服务器生成的与所述软件升级请求消息中的所述软件升级数据的标识对应的数据单元;
[0131]处理模块63,用于根据接收到的所述多个数据单元得到所述软件升级数据。
[0132]采用上述技术方案,升级服务器只需要将大小可以达到几十GB的软件升级数据以多播的通信方式发送给多个终端,其中一种情况可以是升级服务器根据软件升级数据拆生成多个数据单元后分给多个网络节点,使得网络节点复制数据后再与其他网络节点互通有无,使得数据单元可以在通信网络中呈网状扩散,且整个通信链路中只存在一份软件升级数据的数据量,因而可以充分利用网络中的通信资源,避免了点对点传输方式所造成的网络拥塞,提高了软件升级数据的传输效率。
[0133]进一步地,对应于上述心跳数据包的实例,所述接收单元52可以进一步用于接收所述通信服务器定期发送的包括软件版本信息的心跳数据包。当然,在接收到心跳数据包后,终端设备就可以进行是否需要进行软件更新的判断,还可以在响应中反馈其判断结果,从而使控制中心可以快速地收集到所有终端设备的软件升级情况。
[0134]另一方面,所述处理模块63可以进一步用于在接收到的数据单元的数目达到预设值时,利用前向纠错编码算法根据接收到的多个数据单元得到所述软件升级数据;所述数据单元包括升级服务器由所述软件升级数据分得的多个原始数据单元和升级服务器利用所述前向纠错编码算法根据所述原始数据单元得到的多个校验数据单元。
[0135]上述前向纠错(Forward Error Correct1n,FEC)编码算法可以说是一种增加传输数据冗余度来提高传输可靠性的算法。通过该算法,终端设备不需要接收到升级服务器所发送的所有数据单元,也可以还原出升级服务器所发送的全部原始数据,即通信过程中可以允许丢包。同时,接收到的多个数据单元还可以用于对接收到的原始数据进行纠错,以进一步提高传输过程的可靠性。
[0136]进一步地,所述处理模块63还可以用于在根据接收到的多个数据单元不能得到正确的软件升级数据时,执行以下操作中的一项或多项:
[0137]利用前向纠错编码算法对得到的软件升级数据进行纠错;
[0138]抛弃已经接收到的所述多个数据单元,并继续接收升级服务器以多播的通信方式发送的多个数据单元;
[0139]向升级服务器或其他终端设备发送对应的数据单元传输请求,以使升级服务器或其他终端设备返回与所述软件升级数据对应的数据单元。
[0140]具体地,基于上述前向纠错(Forward Error Correct1n,FEC)编码算法,可以在不能得到正确的软件升级数据时对其进行纠错处理,比如利用有冗余的多个数据单元来依照前向纠错编码算法进行纠错,或者使用多种多个数据单元的组合方式来尝试获取正确的软件升级数据。或者,终端设备也可以抛弃不能得到正确软件升级数据的数据单元,而继续接收服务器反复发送的多个数据单元,从而同样可以使得出于各种原因导致的数据单元丢失或错误均可以在下一轮的数据单元发送过程中重新接收,以进一步保障通信的可靠性。
[0141]在上述两种方式均失效的情况下,也可以向升级服务器或其他终端设备发送对应的数据单元传输请求,一方面可以通过收集缺失的数据单元来获得软件升级数据,另一方面也可以重新以其他传输方式来获取软件升级数据(在上述方法的传输的可靠性可以得到保证时,这种情况发生的概率会相当小,因而在总体上不会大幅度增加通信网络的负荷)。
[0142]本发明的实施例公开了:
[0143]A1、一种通信服务器,其特征在于,包括:
[0144]建立单元,用于建立与至少一个终端设备的长连接;
[0145]发送单元,用于向所述终端设备发送包括软件版本信息的消息,以使所述终端设备根据所述软件版本信息判断是否需要进行软件升级,若是则以多播的通信方式从升级服务器处获取软件升级数据。
[0146]A2、根据权利要求A1所述的通信服务器,其特征在于,所述发送单元进一步用于定期向所述终端设备发送包括软件版本信息的心跳数据包,以使所述终端设备根据所述软件版本信息判断是否需要进行软件升级,若是则以多播的通信方式从升级服务器处获取软件升级数据。
[0147]B3、一种终端设备,其特征在于,该终端设备包括:
[0148]建立单元,用于与通信服务器的长连接;
[0149]接收单元,用于接收来自所述通信服务器的包括软件版本信息的消息;
[0150]判断单元,用于根据所述接收单元接收到的所述软件版本信息判断是否需要进行软件升级;
[0151]执行单元,用于在判断单元判定需要进行软件升级时以多播的通信方式从升级服务器处获取软件升级数据。
[0152]B4、根据权利要求B3所述的终端设备,其特征在于,所述执行单元包括:
[0153]发生模块,用于以多播的通信方式从升级服务器处获取软件升级数据;
[0154]接收模块,用于接收升级服务器以多播的通信方式发送的多个数据单元,所述数据单元为所述升级服务器生成的与所述软件升级请求消息中的所述软件升级数据的标识对应的数据单元;
[0155]处理模块,用于根据接收到的所述多个数据单元得到所述软件升级数据。
[0156]B5、根据权利要求B4所述的终端设备,其特征在于,所述处理模块进一步用于在接收到的数据单元的数目达到预设值时,利用前向纠错编码算法根据接收到的多个数据单元得到所述软件升级数据;所述数据单元包括升级服务器由所述软件升级数据分得的多个原始数据单元和升级服务器利用所述前向纠错编码算法根据所述原始数据单元得到的多个校验数据单元。
[0157]B6、根据权利要求B5所述的终端设备,其特征在于,所述处理模块还用于在根据接收到的多个数据单元不能得到正确的软件升级数据时,执行以下操作中的一项或多项:
[0158]利用前向纠错编码算法对得到的软件升级数据进行纠错;
[0159]抛弃已经接收到的所述多个数据单元,并继续接收升级服务器以多播的通信方式发送的多个数据单元;
[0160]向升级服务器或其他终端设备发送对应的数据单元传输请求,以使升级服务器或其他终端设备返回与所述软件升级数据对应的数据单元。
[0161]B7、根据权利要求BI至B6中任意一项所述的终端设备,其特征在于,所述接收单元进一步用于接收所述通信服务器定期发送的包括软件版本信息的心跳数据包。
[0162]CS、一种软件升级指令分发方法,其特征在于,包括:
[0163]建立与至少一个终端设备的长连接;
[0164]向所述终端设备发送包括软件版本信息的消息,以使所述终端设备根据所述软件版本信息判断是否需要进行软件升级,若是则以多播的通信方式从升级服务器处获取软件升级数据。
[0165]C9、根据权利要求CS所述的方法,其特征在于,所述向所述终端设备发送包括软件版本信息的消息,以使所述终端设备根据所述软件版本信息判断是否需要进行软件升级,若是则以多播的通信方式从升级服务器处获取软件升级数据,包括:
[0166]定期向所述终端设备发送包括软件版本信息的心跳数据包,以使所述终端设备根据所述软件版本信息判断是否需要进行软件升级,若是则以多播的通信方式从升级服务器处获取软件升级数据。
[0167]D10、一种软件升级指令分发方法,其特征在于,包括:
[0168]建立与通信服务器的长连接;
[0169]接收来自所述通信服务器的包括软件版本信息的消息;
[0170]根据所述软件版本信息判断是否需要进行软件升级;
[0171]若是,则以多播的通信方式从升级服务器处获取软件升级数据。
[0172]D11、根据权利要求DlO所述的方法,其特征在于,所述以多播的通信方式从升级服务器处获取软件升级数据,包括:
[0173]向升级服务器发送包括待获取的软件升级数据的标识的软件升级请求消息;
[0174]接收升级服务器以多播的通信方式发送的多个数据单元,所述数据单元为所述升级服务器生成的与所述软件升级请求消息中的所述软件升级数据的标识对应的数据单元;
[0175]根据接收到的所述多个数据单元得到所述软件升级数据。
[0176]D12、根据权利要求Dll所述的方法,其特征在于,所述根据接收到的所述多个数据单元得到所述软件升级数据,包括:
[0177]当接收到的数据单元的数目达到预设值时,利用前向纠错编码算法根据接收到的多个数据单元得到所述软件升级数据;所述数据单元包括升级服务器由所述软件升级数据分得的多个原始数据单元和升级服务器利用所述前向纠错编码算法根据所述原始数据单元得到的多个校验数据单元。
[0178]D13、根据权利要求D12所述的方法,其特征在于,所述根据接收到的所述多个数据单元得到所述软件升级数据,还包括:
[0179]当根据接收到的多个数据单元不能得到正确的软件升级数据时,执行以下操作中的一项或多项:
[0180]利用前向纠错编码算法对得到的软件升级数据进行纠错;
[0181]抛弃已经接收到的所述多个数据单元,并继续接收升级服务器以多播的通信方式发送的多个数据单元;
[0182]向升级服务器或其他终端设备发送对应的数据单元传输请求,以使升级服务器或其他终端设备返回与所述软件升级数据对应的数据单元。
[0183]D14、根据权利要求D10至D13中任意一项所述的方法,其特征在于,接收来自所述通信服务器的包括软件版本信息的消息,包括:
[0184]接收所述通信服务器定期发送的包括软件版本信息的心跳数据包。
[0185]本发明的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
[0186]类似地,应当理解,为了精简本发明公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释呈反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循【具体实施方式】的权利要求书由此明确地并入该【具体实施方式】,其中每个权利要求本身都作为本发明的单独实施例。
[0187]本领域技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在于该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是互相排斥之处,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
[0188]此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
[0189]本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的一种浏览器终端的设备中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
[0190]应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
[0191]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
【权利要求】
1.一种通信服务器,其特征在于,包括: 建立单元,用于建立与至少一个终端设备的长连接; 发送单元,用于向所述终端设备发送包括软件版本信息的消息,以使所述终端设备根据所述软件版本信息判断是否需要进行软件升级,若是则以多播的通信方式从升级服务器处获取软件升级数据。
2.根据权利要求1所述的通信服务器,其特征在于,所述发送单元进一步用于定期向所述终端设备发送包括软件版本信息的心跳数据包,以使所述终端设备根据所述软件版本信息判断是否需要进行软件升级,若是则以多播的通信方式从升级服务器处获取软件升级数据。
3.—种终端设备,其特征在于,该终端设备包括: 建立单元,用于与通信服务器的长连接; 接收单元,用于接收来自所述通信服务器的包括软件版本信息的消息; 判断单元,用于根据所述接收单元接收到的所述软件版本信息判断是否需要进行软件升级; 执行单元,用于在判断单元判定需要进行软件升级时以多播的通信方式从升级服务器处获取软件升级数据。
4.根据权利要求3所述的终端设备,其特征在于,所述执行单元包括: 发生模块,用于以多播的通信方式从升级服务器处获取软件升级数据; 接收模块,用于接收升级服务器以多播的通信方式发送的多个数据单元,所述数据单元为所述升级服务器生成的与所述软件升级请求消息中的所述软件升级数据的标识对应的数据单元; 处理模块,用于根据接收到的所述多个数据单元得到所述软件升级数据。
5.根据权利要求4所述的终端设备,其特征在于,所述处理模块进一步用于在接收到的数据单元的数目达到预设值时,利用前向纠错编码算法根据接收到的多个数据单元得到所述软件升级数据;所述数据单元包括升级服务器由所述软件升级数据分得的多个原始数据单元和升级服务器利用所述前向纠错编码算法根据所述原始数据单元得到的多个校验数据单元。
6.根据权利要求5所述的终端设备,其特征在于,所述处理模块还用于在根据接收到的多个数据单元不能得到正确的软件升级数据时,执行以下操作中的一项或多项: 利用前向纠错编码算法对得到的软件升级数据进行纠错; 抛弃已经接收到的所述多个数据单元,并继续接收升级服务器以多播的通信方式发送的多个数据单元; 向升级服务器或其他终端设备发送对应的数据单元传输请求,以使升级服务器或其他终端设备返回与所述软件升级数据对应的数据单元。
7.根据权利要求1至6中任意一项所述的终端设备,其特征在于,所述接收单元进一步用于接收所述通信服务器定期发送的包括软件版本信息的心跳数据包。
8.一种软件升级指令分发方法,其特征在于,包括: 建立与至少一个终端设备的长连接; 向所述终端设备发送包括软件版本信息的消息,以使所述终端设备根据所述软件版本信息判断是否需要进行软件升级,若是则以多播的通信方式从升级服务器处获取软件升级数据。
9.根据权利要求8所述的方法,其特征在于,所述向所述终端设备发送包括软件版本信息的消息,以使所述终端设备根据所述软件版本信息判断是否需要进行软件升级,若是则以多播的通信方式从升级服务器处获取软件升级数据,包括: 定期向所述终端设备发送包括软件版本信息的心跳数据包,以使所述终端设备根据所述软件版本信息判断是否需要进行软件升级,若是则以多播的通信方式从升级服务器处获取软件升级数据。
10.一种软件升级指令分发方法,其特征在于,包括: 建立与通信服务器的长连接; 接收来自所述通信服务器的包括软件版本信息的消息; 根据所述软件版本信息判断是否需要进行软件升级; 若是,则以多播的通信方式从升级服务器处获取软件升级数据。
【文档编号】G06F9/445GK104503801SQ201410844338
【公开日】2015年4月8日 申请日期:2014年12月30日 优先权日:2014年12月30日
【发明者】蔡东赟, 张家柱, 刘娇 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1