一种客户端消息高效的收发和处理方法及系统的制作方法

文档序号:7824296阅读:508来源:国知局
一种客户端消息高效的收发和处理方法及系统的制作方法
【专利摘要】本发明公开了一种客户端消息高效的收发和处理方法及系统。方法包括处理步骤:利用发送队列和单个处理线程实现客户端的收发和处理逻辑,所述发送队列用于存储发送请求消息,所述处理线程用于发送请求消息、接收并处理服务器发过来的消息。系统包括:发送队列模块,用于存储客户端的请求信息;处理模块,用于发送请求消息、接收并处理服务器发过来的消息。本发明一种客户端消息高效的收发和处理方法利用发送队列和单个处理线程实现客户端的收发和处理逻辑,即是使用较少的资源实现了较高的收发成功率和较好的交互实时性。本发明可以广泛应用于各种客户端和服务器的消息交互系统。
【专利说明】一种客户端消息高效的收发和处理方法及系统

【技术领域】
[0001]本发明涉及网络数据通信领域,尤其涉及一种客户端消息的收发和处理方法,本发明还涉及一种客户端消息的收发和处理系统。

【背景技术】
[0002]服务器和客户端又叫主从式架构,简称C/S结构,是一种网络架构,每一个客户端软件的实例都可以向服务器发出请求。在实现服务器和客户端的交互中,常见的收发方式有两种:一收一发方式和常规队列方式。
[0003]如图1所示,一收一发方式:即客户端发出一个请求后(M11),会设置一个接收超时时间(Ml2 )。如果在这个时间内收到了对方的响应(Ml3 ),则认为发送成功(Ml5 ),从而可以继续处理其他的业务,否则会认为发送失败(M16),进而考虑是否进行重发处理或者是其他处理机制。由于网络环境好坏往往是不可知的,所以通常会选择一个比较长的超时时间来等待服务器的响应。这样可以在一定程度上提高收发的成功率。但是如果服务器发送响应由于网络的原因而无法正常到达客户端,这将会导致主进程在超时时间内空等,而无法再做其他的工作。如果在超时时间内收到的不是当前期望的响应(M14),这个模式也无法处理,通常的做法是直接丢掉,从而造成丢包的现象。
[0004]如图2所示,常规队列模式:这种模式不直接操作收发接口。客户端主流程中将请求添加到发送队列(M21、M22)后,然后设置一个超时时间,然后在这段时间内不断查询服务器是否做出了正确的响应(M23)。由于客户端主线程不需要直接处理收发逻辑,而只是通过将请求添加到队列和查询状态标志的形式来间接实现与服务器的交互(M24),所以客户端的主流程不会造成较长时间的阻塞,从而使主流程变得高效,直接提高了客户端和服务器的交互能力。当然这种方式之所以能解决一发一收方式中的难于解决的一些问题,完全要归功于常规队列模式中必须要额外的创建出两个线程和至少一个发送队列来支持。发送线程用于不断轮询发送队列中是否有请求需要发送(BS1),如果有则发送(BS2),没有则继续查询。接收线程用于处理来自服务器的响应(BRl)并设置响应的标志位(BR2),用于客户端主流程查询。而且这种模式将每个线程赋予不同的单一的功能,从而使这个代码框架变得简洁,可以很好的减少代码的冗余,使代码更加健壮。但这种方式的缺点也是显而易见的。首先它的开销比较大,其次需要额外增加代码来实现发送队列,最大的不足是它依然无法解决在客户端等待响应时但收到的却是服务器请求的情况。


【发明内容】

[0005]为了解决上述技术问题,本发明的目的是提供一种高效、节省系统开销的消息收发和处理方法。
[0006]为了解决上述技术问题,本发明的另一个目的是提供一种高效、节省系统开销的消息收发和处理系统。
[0007]本发明所采用的技术方案是: 一种客户端消息高效的收发和处理方法,其包括处理步骤:利用发送队列和单个处理线程实现客户端的收发和处理逻辑,所述发送队列用于存储发送请求消息,所述处理线程用于发送请求消息、接收并处理服务器发过来的消息。
[0008]优选的,所述处理步骤具体为:S1,检查发送队列是否为空,如果为空则跳到步骤S3,否则进入步骤S2 ;S2,从发送队列中取出发送请求并发送;S3,等待服务器回复,并检查是否超时,如果超时,则跳到步骤SI,否则进入步骤S4 ;S4,检查是否收到服务器发过来的消息,如果收到,则进入步骤S5,否则跳回步骤S3 ;S5,检查收到的消息是否是发送请求的响应,如果是,则进入步骤S6 ;S6,处理服务器响应并将成功标志位置位,再返回步骤SI。
[0009]优选的,其还包括步骤:S7,检查收到的消息是否是服务器的请求消息,如果是,则进入步骤S8,否则跳到步骤S3 ;S8,处理服务器的请求消息,再跳到步骤S3。
[0010]优选的,所述步骤S5具体包括子步骤:S51,检查收到的消息是否是发送请求的响应;S52,如果S51的检查结果为是,则进入步骤S6,否则进入步骤S7。
[0011]优选的,其还包括客户端主线程步骤,所述主线程步骤具体为:M1,将请求消息添加到发送队列;M2,检查是否超时,如果超时则跳到步骤M5,否则进入步骤M3 ;M3,检查成功标志是否被置,如被置则进入步骤M4,否则跳到步骤M2 ;M4,请求成功;M5,请求失败。
[0012]一种客户端消息高效的收发和处理系统,其用于实施一种客户端消息高效的收发和处理方法,其包括:发送队列模块,用于存储客户端的请求信息;处理模块,用于发送请求消息、接收并处理服务器发过来的消息。
[0013]优选的,所述处理模块包括:发送单元,用于从发送队列中取出发送请求并发送;接收单元,用于接收服务器发过来的消息;判断单元,用于判断收到的消息是否是发送请求的响应;处理单元,用于处理服务器的响应,并将成功标志置位。
[0014]优选的,所述判断单元还用于判断收到的消息是否是服务器的请求消息;所述处理单元还用于处理服务器的请求消息。
[0015]优选的,其还包括客户端主线程,所述客户端主线程包括:请求消息接收单元,用于将请求消息添加到发送队列;计时单元,用于检查等待时间是否超时;检查单元,用于检查检查成功标志是否被置。
[0016]本发明的有益效果是:
本发明一种客户端消息高效的收发和处理方法利用发送队列和单个处理线程实现客户端的收发和处理逻辑,使得客户端主流程不会造成较长时间的阻塞,从而使主流程变得高效,直接提高了客户端和服务器的交互能力,与此同时,系统的开销小,而且可以有效处理在客户端等待响应时收到的服务器的请求消息,即是使用较少的资源实现了较高的收发成功率和较好的交互实时性。
[0017]本发明可以广泛应用于各种客户端和服务器的消息交互系统。
[0018]本发明的另一个有益效果是:
本发明一种客户端消息高效的收发和处理系统利用发送队列和单个处理线程实现客户端的收发和处理逻辑,使得客户端主流程不会造成较长时间的阻塞,从而使主流程变得高效,直接提高了客户端和服务器的交互能力,与此同时,系统的开销小,而且可以有效处理在客户端等待响应时收到的服务器的请求消息,即是使用较少的资源实现了较高的收发成功率和较好的交互实时性。
[0019]本发明可以广泛应用于各种客户端和服务器的消息交互系统。

【专利附图】

【附图说明】
[0020]下面结合附图对本发明的【具体实施方式】作进一步说明:
图1是现有技术一收一发方式的方法流程示意图;
图2是现有技术常规队列模式的方法流程示意图;
图3是本发明客户端消息高效的收发和处理方法处理线程一种实施例的流程示意图; 图4是本发明客户端消息高效的收发和处理方法客户端主流程一种实施例的流程示意图。

【具体实施方式】
[0021]需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0022]如图4所示,一种客户端消息高效的收发和处理方法,其包括处理步骤:利用发送队列和单个处理线程实现客户端的收发和处理逻辑,所述发送队列用于存储发送请求消息,所述处理线程用于发送请求消息、接收并处理服务器发过来的消息。
[0023]优选的,所述处理步骤具体为:S1,检查发送队列是否为空,如果为空则跳到步骤S3,否则进入步骤S2 ;S2,从发送队列中取出发送请求并发送;S3,等待服务器回复,并检查是否超时,如果超时,则跳到步骤SI,否则进入步骤S4 ;S4,检查是否收到服务器发过来的消息,如果收到,则进入步骤S5,否则跳回步骤S3 ;S5,检查收到的消息是否是发送请求的响应,如果是,则进入步骤S6 ;S6,处理服务器响应并将成功标志位置位,再返回步骤SI。该实施例中,客户端消息高效的收发和处理方法只需要一个发送队列和单个处理线程就可以实现,这点上看它比常规队列模式需要较少的资源。高效模式将常规模式中发送线程和接收线程的功能整合在一起。用一个收发线程来实现收发和处理逻辑。
[0024]该实施例中,所述步骤S5具体包括子步骤:S51,检查收到的消息是否是发送请求的响应;S52,如果S51的检查结果为是,则进入步骤S6,否则进入步骤S7。处理线程还包括步骤:S7,检查收到的消息是否是服务器的请求消息,如果是,则进入步骤S8,否则跳到步骤S3 ;S8,处理服务器的请求消息,再跳到步骤S3 ;所述步骤S5还包括子步骤:S54,如果S51检查结果为否,则进入步骤S7。
[0025]客户端消息高效的收发和处理方法在收到服务器的响应之后,实现如果该响应不是主流程所期待的响应能够正确处理。解决了常规队列模式不能解决的问题。如果在等待服务器响应期间收到的是服务器的请求也会有相应的流程来处理,而且会将处理后产生的客户端响应直接通过发送接口发送出去,而不是将客户端响应又再次添加到发送队列,这有助于提尚对服务器请求响应的实时性。能有效的提尚收发的成功率和交互的实时性。简单地讲就是服务器的请求会比客户端的请求优先级较高,将客户端的请求添加到发送队列可以减少客户端主流程的等待时间,使客户端主线程能尽快空闲下来处理其他业务。而在收发线程中,由于服务器请求比客户端的请求的优先级高,所以如果在等待服务器响应的过程中收到了服务器的请求,就会立刻处理这个请求,这个请求处理完成后再接着等待服务器的响应,直至收到这个请求对应的响应或者超时。将优先级机制引入客户端业务处理流程中,使得客户端在处理本地请求的同时能够优先处理服务器的请求,能有效的提高收发的成功率和交互的实时性。
[0026]如图3所示,其还包括客户端主线程步骤,所述主线程步骤具体为:M1,将请求消息添加到发送队列;M2,检查是否超时,如果超时则跳到步骤M5,否则进入步骤M3 ;M3,检查成功标志是否被置,如被置则进入步骤M4,否则跳到步骤M2 ;M4,请求成功;M5,请求失败。客户端消息高效的收发和处理方法是对常规队列处理模式的优化。比较图2和图4可以看到,它们的客户端主流程都是一样的。所以客户端消息高效的收发和处理方法具备了常规队列模式的所有优点。
[0027]本发明一种客户端消息高效的收发和处理方法利用发送队列和单个处理线程实现客户端的收发和处理逻辑,使得客户端主流程不会造成较长时间的阻塞,从而使主流程变得高效,直接提高了客户端和服务器的交互能力,与此同时,系统的开销小,而且可以有效处理在客户端等待响应时收到的服务器的请求消息,即是使用较少的资源实现了较高的收发成功率和较好的交互实时性。本发明可以广泛应用于各种客户端和服务器的消息交互系统。
[0028]一种客户端消息高效的收发和处理系统,其用于实施一种客户端消息高效的收发和处理方法,其包括:发送队列模块,用于存储客户端的请求信息;处理模块,用于发送请求消息、接收并处理服务器发过来的消息。
[0029]优选的,所述处理模块包括:发送单元,用于从发送队列中取出发送请求并发送;接收单元,用于接收服务器发过来的消息;判断单元,用于判断收到的消息是否是发送请求的响应;处理单元,用于处理服务器的响应,并将成功标志置位。
[0030]优选的,所述判断单元还用于判断收到的消息是否是服务器的请求消息;所述处理单元还用于处理服务器的请求消息。
[0031]优选的,其还包括客户端主线程,所述客户端主线程包括:请求消息接收单元,用于将请求消息添加到发送队列;计时单元,用于检查等待时间是否超时;检查单元,用于检查成功标志是否被置。
[0032]一种客户端消息高效的收发和处理系统的实现原理对应于一种客户端消息高效的收发和处理方法,在此不做赘述。
[0033]本发明一种客户端消息高效的收发和处理系统利用发送队列和单个处理线程实现客户端的收发和处理逻辑,使得客户端主流程不会造成较长时间的阻塞,从而使主流程变得高效,直接提高了客户端和服务器的交互能力,与此同时,系统的开销小,而且可以有效处理在客户端等待响应时收到的服务器的请求消息,即是使用较少的资源实现了较高的收发成功率和较好的交互实时性。本发明可以广泛应用于各种客户端和服务器的消息交互系统。
[0034]以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
【权利要求】
1.一种客户端消息高效的收发和处理方法,其特征在于,其包括步骤:利用发送队列和单个处理线程实现客户端的收发和处理逻辑,所述发送队列用于存储发送请求消息,所述处理线程用于发送请求消息、接收并处理服务器发过来的消息。
2.根据权利要求1所述的客户端消息高效的收发和处理方法,其特征在于,所述步骤具体为: S1,检查所述发送队列是否为空,如果为空则跳到步骤S3,否则进入步骤S2 ; S2,从所述发送队列中取出发送请求并发送; S3,等待服务器回复,并检查是否超时,如果超时,则跳到步骤S1,否则进入步骤S4 ; S4,检查是否收到服务器发过来的消息,如果收到,则进入步骤S5,否则跳回步骤S3 ; S5,检查收到的消息是否是发送请求的响应,如果是,则进入步骤S6 ; S6,处理服务器响应并将成功标志位置位,再返回步骤S1。
3.根据权利要求2所述的客户端消息高效的收发和处理方法,其特征在于,其还包括步骤: S7,检查收到的消息是否是服务器的请求消息,如果是,则进入步骤S8,否则跳到步骤S3 ; S8,处理服务器的请求消息,再跳到步骤S3。
4.根据权利要求3所述的客户端消息高效的收发和处理方法,其特征在于:所述步骤S5具体包括子步骤: S51,检查收到的消息是否是发送请求的响应; S52,如果S51的检查结果为是,则进入步骤S6,否则进入步骤S7。
5.根据权利要求1至4任一项所述的客户端消息高效的收发和处理方法,其特征在于,其还包括客户端主线程步骤,所述主线程步骤具体为: M1,将请求消息添加到发送队列; M2,检查是否超时,如果超时则跳到步骤M5,否则进入步骤M3 ; M3,检查成功标志是否被置,如被置则进入步骤M4,否则跳到步骤M2 ; M4,请求成功; M5,请求失败。
6.一种客户端消息高效的收发和处理系统,其特征在于,其用于实施如权利要求1至5任意一项所述的客户端消息高效的收发和处理方法,其包括: 发送队列模块,用于存储客户端的请求信息; 处理模块,用于发送请求消息、接收并处理服务器发过来的消息。
7.根据权利要求6所述的客户端消息高效的收发和处理系统,其特征在于,所述处理模块包括: 发送单元,用于从发送队列中取出发送请求并发送; 接收单元,用于接收服务器发过来的消息; 判断单元,用于判断收到的消息是否是发送请求的响应; 处理单元,用于处理服务器的响应,并将成功标志置位。
8.根据权利要求7所述的客户端消息高效的收发和处理系统,其特征在于:所述判断单元还用于判断收到的消息是否是服务器的请求消息;所述处理单元还用于处理服务器的请求消息。
9.根据权利要求6至8任一项所述的客户端消息高效的收发和处理系统,其特征在于,其还包括客户端主线程,所述客户端主线程包括: 请求消息接收单元,用于将请求消息添加到发送队列; 计时单元,用于检查等待时间是否超时; 检查单元,用于检查检查成功标志是否被置。
【文档编号】H04L29/08GK104506642SQ201410842195
【公开日】2015年4月8日 申请日期:2014年12月30日 优先权日:2014年12月30日
【发明者】廖子强, 陈勇全, 符镇一, 唐泽鹏, 郑宏连, 赵兵 申请人:深圳市兰丁科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1