一种处理报文的方法

文档序号:9399340阅读:357来源:国知局
一种处理报文的方法
【技术领域】
[0001]本发明涉及网络领域,尤其涉及一种基于长连接用于处理报文的方法。
【背景技术】
[0002]传统的TR-069 (CPE广域网管理协议)客户端普遍是基于会话机制与服务器短连接,为了解决服务器控制内网TR-069客户端的问题,需要将原本在开始会话时建立连接在结束会话时断开连接的短连接改为客户端启动后主动连接服务器且连接建立后连接一直保持不断的长连接。虽然长连接的引入解决服务器控制内网TR-069客户端的问题,但却引入了另一个问题:原本的会话机制无法正确工作,并且要求服务器和客户端必须按照顺序交互报文,只能等一个交互会话结束后才能开始另一个会话,如图1所示:服务器(Server)向客户端(Client)发送一空报文以通知客户端开始会话(sess1n),客户端通知(Inform)服务器准备就绪,服务器通过远程过程调用协议(Remote Procedure Call Protocol,RPC)向客户端发送处理报文,客户端将处理报文进行处理并通过RPC协议向服务器回复处理结果,服务器向客户端发送通知响应(Inform Response),结束会话。一旦会话乱序就会导致客户端处理异常。但由于长连接一直处于连接状态的特点,致使只要上层有需要就会通过服务器向客户端发送报文,因此会发生如图2所示的会话错误(sess1n error)。

【发明内容】

[0003]针对现有的基于会话机制的长连接存在的上述问题,现提供一种旨在实现基于长连接可避免报文交互过程中出错情形的处理报文的方法。
[0004]具体技术方案如下:
[0005]一种处理报文的方法,用于基于CPE广域网管理协议的客户端,包括下述步骤:
[0006]S1.所述客户端与一服务器建立长连接;
[0007]S2.所述客户端监听所述长连接是否有数据包传送,若是,执行步骤S3 ;若否,执行步骤S4 ;
[0008]S3.所述客户端对所述数据包进行解析,根据解析结果创建对应的任务,并将所述任务添加至一预设的队列中,返回执行所述步骤S2 ;
[0009]S4.所述客户端根据预设的所述队列的顺序逐条处理所述队列中的所述任务,并将所述任务的处理结果发送至所述服务器,返回执行所述步骤S2。
[0010]优选的,在执行所述S3之前,还包括:
[0011]所述客户端提供一缓冲区用以存储接收到的所述数据包,并从所述缓存区中读取所述数据包。
[0012]优选的,每一所述数据包中包括复数条报文,每一条所述报文对应一条所述任务。
[0013]优选的,所述步骤S3包括:
[0014]S31.所述客户端对所述数据包进行解析,获取所述数据包中的复数条所述报文;
[0015]S32.所述客户端根据获取的所述报文创建与所述报文对应的所述任务;
[0016]S33.所述客户端根据所述数据包的包头指示的顺序,将所述报文对应的所述任务添加于所述队列中。
[0017]优选的,在执行所述步骤S4之前还包括:
[0018]判断所述队列中是否存在未执行的所述任务,若是,执行所述步骤S4 ;若否,返回执行所述步骤S2。
[0019]优选的,在所述步骤S4中,每处理一条所述任务,将所述任务的处理结果发送至所述服务器。
[0020]优选的,在所述步骤S4中,根据所述队列的顺序逐条将所述队列中的所有所述任务处理完成后,根据所述队列的顺序逐一将每条所述任务的处理结果发送至所述服务器。
[0021]优选的,所述步骤S4中,还包括:
[0022]提供一预定周期;
[0023]所述步骤S4中,于所述预定周期内,根据所述队列的顺序,逐条执行所述队列中的所述任务,并将每条所述任务的处理结果发送至所述服务器。
[0024]上述技术方案的有益效果:
[0025]本技术方案中,处理报文的方法用于监听长连接是否有数据包传输,当有数据包传输时,对数据包进行解析,根据解析结果创建任务,并将任务添加于预设的队列中;当没有数据包传输时,集中处理队列中的所有任务,并将处理结果发送至服务器,避免了报文交互过程中容易出错的情形,提高了通道利用率。
【附图说明】
[0026]图1为现有的会话机制的交互图;
[0027]图2为现有的会话机制层出错场景交互图;
[0028]图3为本发明的任务队列机制的交互图;
[0029]图4为本发明所述的处理报文的方法的第一种实施例的方法流程图;
[0030]图5为本发明所述的处理报文的方法的第二种实施例的方法流程图;
[0031]图6为本发明所述的处理报文的方法的第三种实施例的方法流程图;
[0032]图7为本发明所述的处理报文的方法的第四种实施例的方法流程图。
【具体实施方式】
[0033]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0034]需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
[0035]下面结合附图和具体实施例对本发明作进一步说明,但不作为本发明的限定。
[0036]本发明基于如下发现:
[0037]现有的长连接主要基于原始TR-069客户端的会话机制,原始的会话机制主要是为了保证报文顺序不乱序,如图1所示。但是基于长连接的客户端如果要处理服务器下发的并发无序报文,会发生如图2所示的会话错误。因此需要改进长连接的处理机制。可通过如下三种方法进行改进:
[0038]第一种方法:用多进程的方法,通过子进程处理会话,这样多个会话可以并发;
[0039]第二种方法:使用多线程,每个线程处理一个会话;
[0040]第三种方法:使用单进程并采用任务队列方式。
[0041]上述第一种方法和第二种方法对硬件要求较高,适合在多核,大内存的处理平台上使用。目前很多大型服务器是使用多进程,多线程方法来处理十万级,百万级的并发访问。而对于家庭网关这种网络终端设备,处理能力有限,并且并发数不会太多,多进程或多线程的处理方法会额外开销系统资源。所以本发明采取第三种方法,即采用任务队列的方式,以避免多条报文交互过程中出错的情形。
[0042]如图3-4所示,一种处理报文的方法,用于基于CPE广域网管理协议的客户端,包括下述步骤:
[0043]S1.客户端与一服务器建立长连接;
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1