CN104506642B - 一种客户端消息高效的收发和处理方法及系统 - Google Patents
一种客户端消息高效的收发和处理方法及系统 Download PDFInfo
- Publication number
- CN104506642B CN104506642B CN201410842195.4A CN201410842195A CN104506642B CN 104506642 B CN104506642 B CN 104506642B CN 201410842195 A CN201410842195 A CN 201410842195A CN 104506642 B CN104506642 B CN 104506642B
- Authority
- CN
- China
- Prior art keywords
- message
- processing
- client
- server
- receiving
- 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.)
- Expired - Fee Related
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 22
- 238000000034 method Methods 0.000 claims abstract description 13
- 230000008569 process Effects 0.000 claims abstract description 9
- 230000004044 response Effects 0.000 claims description 35
- 230000005540 biological transmission Effects 0.000 claims description 10
- 238000007689 inspection Methods 0.000 claims description 7
- 230000009191 jumping Effects 0.000 claims description 3
- 230000003993 interaction Effects 0.000 abstract description 14
- 230000000694 effects Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Multi Processors (AREA)
Abstract
本发明公开了一种客户端消息高效的收发和处理方法及系统。方法包括处理步骤:利用发送队列和单个处理线程实现客户端的收发和处理逻辑,所述发送队列用于存储发送请求消息,所述处理线程用于发送请求消息、接收并处理服务器发过来的消息。系统包括:发送队列模块,用于存储客户端的请求信息;处理模块,用于发送请求消息、接收并处理服务器发过来的消息。本发明一种客户端消息高效的收发和处理方法利用发送队列和单个处理线程实现客户端的收发和处理逻辑,即是使用较少的资源实现了较高的收发成功率和较好的交互实时性。本发明可以广泛应用于各种客户端和服务器的消息交互系统。
Description
技术领域
本发明涉及网络数据通信领域,尤其涉及一种客户端消息的收发和处理方法,本发明还涉及一种客户端消息的收发和处理系统。
背景技术
服务器和客户端又叫主从式架构,简称C/S结构,是一种网络架构,每一个客户端软件的实例都可以向服务器发出请求。在实现服务器和客户端的交互中,常见的收发方式有两种:一收一发方式和常规队列方式。
如图1所示,一收一发方式:即客户端发出一个请求后(M11),会设置一个接收超时时间(M12)。如果在这个时间内收到了对方的响应(M13),则认为发送成功(M15),从而可以继续处理其他的业务,否则会认为发送失败(M16),进而考虑是否进行重发处理或者是其他处理机制。由于网络环境好坏往往是不可知的,所以通常会选择一个比较长的超时时间来等待服务器的响应。这样可以在一定程度上提高收发的成功率。但是如果服务器发送响应由于网络的原因而无法正常到达客户端,这将会导致主进程在超时时间内空等,而无法再做其他的工作。如果在超时时间内收到的不是当前期望的响应(M14),这个模式也无法处理,通常的做法是直接丢掉,从而造成丢包的现象。
如图2所示,常规队列模式:这种模式不直接操作收发接口。客户端主流程中将请求添加到发送队列(M21、M22)后,然后设置一个超时时间,然后在这段时间内不断查询服务器是否做出了正确的响应(M23)。由于客户端主线程不需要直接处理收发逻辑,而只是通过将请求添加到队列和查询状态标志的形式来间接实现与服务器的交互(M24),所以客户端的主流程不会造成较长时间的阻塞,从而使主流程变得高效,直接提高了客户端和服务器的交互能力。当然这种方式之所以能解决一发一收方式中的难于解决的一些问题,完全要归功于常规队列模式中必须要额外的创建出两个线程和至少一个发送队列来支持。发送线程用于不断轮询发送队列中是否有请求需要发送(BS1),如果有则发送(BS2),没有则继续查询。接收线程用于处理来自服务器的响应(BR1)并设置响应的标志位(BR2),用于客户端主流程查询。而且这种模式将每个线程赋予不同的单一的功能,从而使这个代码框架变得简洁,可以很好的减少代码的冗余,使代码更加健壮。但这种方式的缺点也是显而易见的。首先它的开销比较大,其次需要额外增加代码来实现发送队列,最大的不足是它依然无法解决在客户端等待响应时但收到的却是服务器请求的情况。
发明内容
为了解决上述技术问题,本发明的目的是提供一种高效、节省系统开销的消息收发和处理方法。
为了解决上述技术问题,本发明的另一个目的是提供一种高效、节省系统开销的消息收发和处理系统。
本发明所采用的技术方案是:
一种客户端消息高效的收发和处理方法,其包括处理步骤:利用发送队列和单个处理线程实现客户端的收发和处理逻辑,所述发送队列用于存储发送请求消息,所述处理线程用于发送请求消息、接收并处理服务器发过来的消息。
优选的,所述处理步骤具体为:S1,检查发送队列是否为空,如果为空则跳到步骤S3,否则进入步骤S2;S2,从发送队列中取出发送请求并发送;S3,等待服务器回复,并检查是否超时,如果超时,则跳到步骤S1,否则进入步骤S4;S4,检查是否收到服务器发过来的消息,如果收到,则进入步骤S5,否则跳回步骤S3;S5,检查收到的消息是否是发送请求的响应,如果是,则进入步骤S6;S6,处理服务器响应并将成功标志位置位,再返回步骤S1。
优选的,其还包括步骤:S7,检查收到的消息是否是服务器的请求消息,如果是,则进入步骤S8,否则跳到步骤S3;S8,处理服务器的请求消息,再跳到步骤S3。
优选的,所述步骤S5具体包括子步骤:S51,检查收到的消息是否是发送请求的响应;S52,如果S51的检查结果为是,则进入步骤S6,否则进入步骤S7。
优选的,其还包括客户端主线程步骤,所述主线程步骤具体为:M1,将请求消息添加到发送队列;M2,检查是否超时,如果超时则跳到步骤M5,否则进入步骤M3;M3,检查成功标志是否被置,如被置则进入步骤M4,否则跳到步骤M2;M4,请求成功;M5,请求失败。
一种客户端消息高效的收发和处理系统,其用于实施一种客户端消息高效的收发和处理方法,其包括:发送队列模块,用于存储客户端的请求信息;处理模块,用于发送请求消息、接收并处理服务器发过来的消息。
优选的,所述处理模块包括:发送单元,用于从发送队列中取出发送请求并发送;接收单元,用于接收服务器发过来的消息;判断单元,用于判断收到的消息是否是发送请求的响应;处理单元,用于处理服务器的响应,并将成功标志置位。
优选的,所述判断单元还用于判断收到的消息是否是服务器的请求消息;所述处理单元还用于处理服务器的请求消息。
优选的,其还包括客户端主线程,所述客户端主线程包括:请求消息接收单元,用于将请求消息添加到发送队列;计时单元,用于检查等待时间是否超时;检查单元,用于检查检查成功标志是否被置。
本发明的有益效果是:
本发明一种客户端消息高效的收发和处理方法利用发送队列和单个处理线程实现客户端的收发和处理逻辑,使得客户端主流程不会造成较长时间的阻塞,从而使主流程变得高效,直接提高了客户端和服务器的交互能力,与此同时,系统的开销小,而且可以有效处理在客户端等待响应时收到的服务器的请求消息,即是使用较少的资源实现了较高的收发成功率和较好的交互实时性。
本发明可以广泛应用于各种客户端和服务器的消息交互系统。
本发明的另一个有益效果是:
本发明一种客户端消息高效的收发和处理系统利用发送队列和单个处理线程实现客户端的收发和处理逻辑,使得客户端主流程不会造成较长时间的阻塞,从而使主流程变得高效,直接提高了客户端和服务器的交互能力,与此同时,系统的开销小,而且可以有效处理在客户端等待响应时收到的服务器的请求消息,即是使用较少的资源实现了较高的收发成功率和较好的交互实时性。
本发明可以广泛应用于各种客户端和服务器的消息交互系统。
附图说明
下面结合附图对本发明的具体实施方式作进一步说明:
图1是现有技术一收一发方式的方法流程示意图;
图2是现有技术常规队列模式的方法流程示意图;
图3是本发明客户端消息高效的收发和处理方法处理线程一种实施例的流程示意图;
图4是本发明客户端消息高效的收发和处理方法客户端主流程一种实施例的流程示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
如图4所示,一种客户端消息高效的收发和处理方法,其包括处理步骤:利用发送队列和单个处理线程实现客户端的收发和处理逻辑,所述发送队列用于存储发送请求消息,所述处理线程用于发送请求消息、接收并处理服务器发过来的消息。
优选的,所述处理步骤具体为:S1,检查发送队列是否为空,如果为空则跳到步骤S3,否则进入步骤S2;S2,从发送队列中取出发送请求并发送;S3,等待服务器回复,并检查是否超时,如果超时,则跳到步骤S1,否则进入步骤S4;S4,检查是否收到服务器发过来的消息,如果收到,则进入步骤S5,否则跳回步骤S3;S5,检查收到的消息是否是发送请求的响应,如果是,则进入步骤S6;S6,处理服务器响应并将成功标志位置位,再返回步骤S1。该实施例中,客户端消息高效的收发和处理方法只需要一个发送队列和单个处理线程就可以实现,这点上看它比常规队列模式需要较少的资源。高效模式将常规模式中发送线程和接收线程的功能整合在一起。用一个收发线程来实现收发和处理逻辑。
该实施例中,所述步骤S5具体包括子步骤:S51,检查收到的消息是否是发送请求的响应;S52,如果S51的检查结果为是,则进入步骤S6,否则进入步骤S7。处理线程还包括步骤:S7,检查收到的消息是否是服务器的请求消息,如果是,则进入步骤S8,否则跳到步骤S3;S8,处理服务器的请求消息,再跳到步骤S3;所述步骤S5还包括子步骤:S54,如果S51检查结果为否,则进入步骤S7。
客户端消息高效的收发和处理方法在收到服务器的响应之后,实现如果该响应不是主流程所期待的响应能够正确处理。解决了常规队列模式不能解决的问题。如果在等待服务器响应期间收到的是服务器的请求也会有相应的流程来处理,而且会将处理后产生的客户端响应直接通过发送接口发送出去,而不是将客户端响应又再次添加到发送队列,这有助于提高对服务器请求响应的实时性。能有效的提高收发的成功率和交互的实时性。简单地讲就是服务器的请求会比客户端的请求优先级较高,将客户端的请求添加到发送队列可以减少客户端主流程的等待时间,使客户端主线程能尽快空闲下来处理其他业务。而在收发线程中,由于服务器请求比客户端的请求的优先级高,所以如果在等待服务器响应的过程中收到了服务器的请求,就会立刻处理这个请求,这个请求处理完成后再接着等待服务器的响应,直至收到这个请求对应的响应或者超时。将优先级机制引入客户端业务处理流程中,使得客户端在处理本地请求的同时能够优先处理服务器的请求,能有效的提高收发的成功率和交互的实时性。
如图3所示,其还包括客户端主线程步骤,所述主线程步骤具体为:M1,将请求消息添加到发送队列;M2,检查是否超时,如果超时则跳到步骤M5,否则进入步骤M3;M3,检查成功标志是否被置,如被置则进入步骤M4,否则跳到步骤M2;M4,请求成功;M5,请求失败。客户端消息高效的收发和处理方法是对常规队列处理模式的优化。比较图2和图4可以看到,它们的客户端主流程都是一样的。所以客户端消息高效的收发和处理方法具备了常规队列模式的所有优点。
本发明一种客户端消息高效的收发和处理方法利用发送队列和单个处理线程实现客户端的收发和处理逻辑,使得客户端主流程不会造成较长时间的阻塞,从而使主流程变得高效,直接提高了客户端和服务器的交互能力,与此同时,系统的开销小,而且可以有效处理在客户端等待响应时收到的服务器的请求消息,即是使用较少的资源实现了较高的收发成功率和较好的交互实时性。本发明可以广泛应用于各种客户端和服务器的消息交互系统。
一种客户端消息高效的收发和处理系统,其用于实施一种客户端消息高效的收发和处理方法,其包括:发送队列模块,用于存储客户端的请求信息;处理模块,用于发送请求消息、接收并处理服务器发过来的消息。
优选的,所述处理模块包括:发送单元,用于从发送队列中取出发送请求并发送;接收单元,用于接收服务器发过来的消息;判断单元,用于判断收到的消息是否是发送请求的响应;处理单元,用于处理服务器的响应,并将成功标志置位。
优选的,所述判断单元还用于判断收到的消息是否是服务器的请求消息;所述处理单元还用于处理服务器的请求消息。
优选的,其还包括客户端主线程,所述客户端主线程包括:请求消息接收单元,用于将请求消息添加到发送队列;计时单元,用于检查等待时间是否超时;检查单元,用于检查成功标志是否被置。
一种客户端消息高效的收发和处理系统的实现原理对应于一种客户端消息高效的收发和处理方法,在此不做赘述。
本发明一种客户端消息高效的收发和处理系统利用发送队列和单个处理线程实现客户端的收发和处理逻辑,使得客户端主流程不会造成较长时间的阻塞,从而使主流程变得高效,直接提高了客户端和服务器的交互能力,与此同时,系统的开销小,而且可以有效处理在客户端等待响应时收到的服务器的请求消息,即是使用较少的资源实现了较高的收发成功率和较好的交互实时性。本发明可以广泛应用于各种客户端和服务器的消息交互系统。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
Claims (4)
1.一种客户端消息高效的收发和处理方法,其特征在于,其包括步骤:利用发送队列和单个处理线程实现客户端的收发和处理逻辑,所述发送队列用于存储发送请求消息,所述处理线程用于发送请求消息、接收并处理服务器发过来的消息;
所述步骤具体为:
S1,检查所述发送队列是否为空,如果为空则跳到步骤S3,否则进入步骤S2;
S2,从所述发送队列中取出发送请求并发送;
S3,等待服务器回复,并检查是否超时,如果超时,则跳到步骤S1,否则进入步骤S4;
S4,检查是否收到服务器发过来的消息,如果收到,则进入步骤S5,否则跳回步骤S3;
S5,检查收到的消息是否是发送请求的响应,如果是,则进入步骤S6;
S6,处理服务器响应并将成功标志位置位,再返回步骤S1;
所述方法还包括步骤:
S7,检查收到的消息是否是服务器的请求消息,如果是,则进入步骤S8,否则跳到步骤S3;
S8,处理服务器的请求消息,所述处理服务器请求具体包括:处理后产生的客户端响应直接通过发送接口发送出去,再跳到步骤S3;
所述步骤S5具体包括子步骤:
S51,检查收到的消息是否是发送请求的响应;
S52,如果S51的检查结果为是,则进入步骤S6,否则进入步骤S7。
2.根据权利要求1所述的客户端消息高效的收发和处理方法,其特征在于,其还包括客户端主线程步骤,所述主线程步骤具体为:
M1,将请求消息添加到发送队列;
M2,检查是否超时,如果超时则跳到步骤M5,否则进入步骤M3;
M3,检查成功标志是否被置,如被置则进入步骤M4,否则跳到步骤M2;
M4,请求成功;
M5,请求失败。
3.一种客户端消息高效的收发和处理系统,其特征在于,其用于实施如权利要求1至2任意一项所述的客户端消息高效的收发和处理方法,其包括:
发送队列模块,用于存储客户端的请求信息;
处理模块,用于发送请求消息、接收并处理服务器发过来的消息;
所述处理模块包括:
发送单元,用于从发送队列中取出发送请求并发送;
接收单元,用于接收服务器发过来的消息;
判断单元,用于判断收到的消息是否是发送请求的响应;
处理单元,用于处理服务器的响应,并将成功标志置位;
所述判断单元还用于判断收到的消息是否是服务器的请求消息;所述处理单元还用于处理服务器的请求消息。
4.根据权利要求3所述的客户端消息高效的收发和处理系统,其特征在于,其还包括客户端主线程,所述客户端主线程包括:
请求消息接收单元,用于将请求消息添加到发送队列;
计时单元,用于检查等待时间是否超时;
检查单元,用于检查检查成功标志是否被置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410842195.4A CN104506642B (zh) | 2014-12-30 | 2014-12-30 | 一种客户端消息高效的收发和处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410842195.4A CN104506642B (zh) | 2014-12-30 | 2014-12-30 | 一种客户端消息高效的收发和处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104506642A CN104506642A (zh) | 2015-04-08 |
CN104506642B true CN104506642B (zh) | 2018-06-22 |
Family
ID=52948357
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410842195.4A Expired - Fee Related CN104506642B (zh) | 2014-12-30 | 2014-12-30 | 一种客户端消息高效的收发和处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104506642B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105119981B (zh) * | 2015-07-23 | 2019-06-07 | 上海斐讯数据通信技术有限公司 | 一种处理报文的方法 |
CN108540575B (zh) * | 2018-04-27 | 2021-07-20 | 北京奇艺世纪科技有限公司 | 一种网络请求调度方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1937811A (zh) * | 2006-08-28 | 2007-03-28 | 华为技术有限公司 | 终端与服务器通信的方法、系统和装置 |
CN102281289A (zh) * | 2011-07-18 | 2011-12-14 | 深圳市康必达中创科技有限公司 | 一种基于电力监控的iec61850设计方法 |
CN102999386A (zh) * | 2012-11-08 | 2013-03-27 | 山东大学 | 一种通过在单进程中实现多消息队列机制提升性能的方法 |
CN103164256A (zh) * | 2011-12-08 | 2013-06-19 | 深圳市快播科技有限公司 | 一种实现单机支持高并发处理方法及系统 |
-
2014
- 2014-12-30 CN CN201410842195.4A patent/CN104506642B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1937811A (zh) * | 2006-08-28 | 2007-03-28 | 华为技术有限公司 | 终端与服务器通信的方法、系统和装置 |
CN102281289A (zh) * | 2011-07-18 | 2011-12-14 | 深圳市康必达中创科技有限公司 | 一种基于电力监控的iec61850设计方法 |
CN103164256A (zh) * | 2011-12-08 | 2013-06-19 | 深圳市快播科技有限公司 | 一种实现单机支持高并发处理方法及系统 |
CN102999386A (zh) * | 2012-11-08 | 2013-03-27 | 山东大学 | 一种通过在单进程中实现多消息队列机制提升性能的方法 |
Non-Patent Citations (2)
Title |
---|
基于ESB的质量统计过程控制系统的设计与实现;偶继飞;《中国优秀硕士学位论文全文数据库》;20130315;全文 * |
面向物流企业的Web服务组合模型研究;金明;《万方学术论文数据库》;20110803;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN104506642A (zh) | 2015-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105472023B (zh) | 一种远程直接存储器存取的方法及装置 | |
CN105763619B (zh) | 客户端与服务端进行通讯的方法及装置 | |
CN103731343A (zh) | 基于lpc2468的mvb-wtb网关及其工作方法 | |
US20140092418A1 (en) | Image forming device, management device, information processing system, and storage medium | |
CN105868032A (zh) | 一种支持多系统接入的报文处理系统及方法 | |
CN104079599A (zh) | 一种消息实时同步方法以及集装箱码头作业系统 | |
CN110635982B (zh) | 通讯总线上双主机通讯方法、系统、工控网关及储存介质 | |
CN109327511A (zh) | 一种基于http协议的数据请求方法和服务器 | |
CN108063653B (zh) | 一种时延控制方法、装置及系统 | |
CN107360632B (zh) | 一种用于建立长连接的方法和设备 | |
CN104506642B (zh) | 一种客户端消息高效的收发和处理方法及系统 | |
CN108667817A (zh) | 报文转换系统和报文转换方法 | |
CN107317731A (zh) | 一种客户端与服务器连接状态的检测方法 | |
CN103905498B (zh) | 服务信息管理方法及服务信息管理系统 | |
CN105530155B (zh) | 一种1553b总线全域消息触发控制方法 | |
CN102054213A (zh) | 一种信息集成方法、装置及系统 | |
DE112016002363T5 (de) | Kommunikationseinrichtung und kommunikationsverfahren | |
CN106302432B (zh) | 一种基于车联网的通信装置及控制方法 | |
CN111064768B (zh) | 打印机数据传输控制方法、装置、设备及存储介质 | |
CN109922012A (zh) | 一种传输数据的方法以及相关设备 | |
CN105099645A (zh) | 一种基于半双工通信设备的多用户并发通信的方法和装置 | |
CN110913453A (zh) | 通信方法、装置、计算机可读介质及电子设备 | |
CN110166506B (zh) | 超文本传输协议Http的连接方法及节点设备 | |
CN102546415A (zh) | 一种基于vxworks平台上快速收发以太网报文的方法 | |
CN102918811A (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 | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 518000 Nanshan Medical Instrument Industrial Park 1019, Nanhai Road, Nanshan District, Shenzhen, Guangdong, A211-A213 Patentee after: Shenzhen Hai Yun new energy Co.,Ltd. Address before: 518052 Nanshan Medical Instrument Industrial Park 1019, Nanhai Road, Nanshan District, Shenzhen, Guangdong, A211-A213 Patentee before: SHENZHEN LANDING TECHNOLOGY Co.,Ltd. |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180622 |