一种双工通信的方法及通信服务器的制作方法

文档序号:7886848阅读:247来源:国知局
专利名称:一种双工通信的方法及通信服务器的制作方法
技术领域
本发明属于通信领域,尤其涉及一种双工通信的方法及通信服务器。
背景技术
随着网络化社会的不断进步,越来越多的网络通讯工具应用到工作和生活中,比如飞信、MSN和一些企业版应用软件等。在目前的即时通信应用中,客户端与通信服务器的之间建立的某一连接在同一时间点只能单独发送或单独接收数据,不能同时接收和发送数据,极大地降低了通信效率。另外,当有大量客户端同时连接通信服务器时,通信服务器会产生大量连接,如果不对这些连接的数据缓冲区统一管理,将产生大量的内存碎片,降低了连接数据缓冲区的访问速度,严重时甚至会导致通信服务器崩溃。

发明内容
本发明提供一种双工通信的方法及通信服务器以解决上述问题。本发明提供一种双工通信的方法,包括以下步骤。通信服务器根据设定的最大客户端连接数分配缓冲内存大小。所述通信服务器创建双工连接并为所述双工连接分配数据缓冲区,其中,每个双工连接包括一个数据接收连接以及一个数据发送连接。当所述通信服务器从客户端接收消息时,所述通信服务器从与所述客户端匹配的双工连接的数据接收连接对应的数据缓冲区获取接收的数据,当所述通信服务器发送消息给所述客户端时,所述通信服务器将发送的数据写入与所述客户端匹配的双工连接的数据发送连接对应的数据缓冲区,并将所述数据缓冲区的数据发送给所述客户端。本发明提供一种双工通信的通信服务器,包括分配模块、创建模块、收发模块,其中所述分配模块连接所述创建模块,所述创建模块连接所述收发模块,所述收发模块,包括接收装置及发送装置,所述接收装置连接所述发送装置。所述分配模块,用于根据设定的最大客户端连接数分配缓冲内存大小。所述创建模块,用于创建双工连接并为所述双工连接分配数据缓冲区,其中,每个双工连接包括一个数据接收连接以及一个数据发送连接。所述接收装置,用于从客户端接收消息时,从与所述客户端匹配的双工连接的数据接收连接对应的数据缓冲区获取接收的数据。所述发送装置,用于发送消息给所述客户端时,将发送的数据写入与所述客户端匹配的双工连接的数据发送连接对应的数据缓冲区,并将所述数据缓冲区的数据发送给所述客户端。相较于先前技术,根据本发明提供的双工通信的方法及通信服务器,创建同时用于接收和发送数据的双工连接,并为每个双工连接分配数据缓冲区,能够同时进行收发数据,提高了通信效率。当通信服务器从客户端接收消息时,通信服务器从与客户端匹配的双工连接的数据接收连接对应的数据缓冲区获取接收的数据,当通信服务器发送消息给客户端时,通信服务器将发送的数据写入与客户端匹配的双工连接的数据发送连接对应的数据缓冲区,并将数据缓冲区的数据发送给客户端。以上对数据缓冲区的统一管理,有效防止了内存碎片的产生,并且大大提高了服务器寻址速度。


此处所说明的附图用来提供对本发明的进ー步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图1所示为根据本发明的较佳实施例提供的双エ通信的方法的流程图;图2所示为根据本发明的较佳实施例提供的双エ通信的通信服务器的示意图。
具体实施例方式下文中将參考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互組合。图1所示为根据本发明的较佳实施例提供的双エ通信的方法的流程图。如图1所示,本发明较佳实施例提供的双エ通信的方法包括步骤101 103。步骤101 通信服务器根据设定的最大客户端连接数分配缓冲内存大小。具体而言,每台通信服务器具有最大客户端连接数,根据所述最大客户端连接数分配缓冲内存大小。步骤102 所述通信服务器创建双エ连接并为所述双エ连接分配数据缓冲区,其中,每个双エ连接包括一个数据接收连接以及ー个数据发送连接。具体而言,通信服务器创建双エ连接,每个双エ连接包括一个数据接收连接以及一个数据发送连接,所述双エ连接的个数与设定的最大客户端连接数相等。同吋,所述通信服务器创建空闲池以及繁忙池,其中,所述空闲池用于存放当前没有与客户端匹配的双 エ连接,所述繁忙池用于存放正在与客户端匹配的双エ连接。当所述通信服务器侦听到所述客户端的通信连接时,所述通信服务器从所述空闲池取出一个双エ连接与所述客户端匹配,并将所述双エ连接放入所述繁忙池中。当所述客户端断开与所述通信服务器的通信后, 所述通信服务器清空与所述客户端匹配的双エ连接对应的数据缓冲区,并将所述双エ连接从所述繁忙池移入所述空闲池中。所述通信服务器创建双エ连接后,为所述双エ连接分配数据缓冲区,所述双エ连接的数据缓冲区,一半用于存放所述数据接收连接接收的数据,另一半用于存放数据发送连接发送的数据。所述双エ连接的数据缓冲区大小乘以最大客户端连接数,即为通信服务器分配的缓冲内存大小。举例而言,设定通信服务器的最大客户端连接数为1000,所述通信服务器为每个双エ连接分配的数据缓冲区大小为2048byte,则通信服务器分配的缓冲内存大小为 1000*2048byte。若第一个双エ连接的数据缓冲区为0 2048byte,则所述第一个双エ连接的数据接收连接所对应的缓冲区为0 10MByte、数据发送连接所对应的缓冲区为IOM 2048Byte。若第二个双エ连接的数据缓冲区为2048 4096Byte,则所述第二个双エ连接的数据接收连接所对应的缓冲区为2048 3072Byte、数据发送连接所对应的缓冲区为 3072 4096Byte。依次类推,直到将所有双エ连接的数据缓冲区分配完毕。步骤103 当所述通信服务器从客户端接收消息吋,所述通信服务器从与所述客户端匹配的双ェ连接的数据接收连接对应的数据缓冲区获取接收的数据,当所述通信服务器发送消息给所述客户端时,所述通信服务器将发送的数据写入与所述客户端匹配的双ェ连接的数据发送连接对应的数据缓冲区,并将所述数据缓冲区的数据发送给所述客户端。具体而言,通信服务器从客户端接收消息时,所述通信服务器从繁忙池中找到与所述客户端匹配的双工连接,并在缓冲内存中查找该双工连接的数据接收连接的数据缓冲区,从所述数据接收连接的数据缓冲区中取出数据后,解析数据,并进行业务逻辑处理。若通信服务器发送消息给客户端,所述通信服务器首先从繁忙池中找到与所述客户端匹配的双工连接,并在缓冲内存中查找该双工连接的数据发送连接的数据缓冲区,将要发送的数据写入所述数据发送连接的数据缓冲区,然后发送所述数据发送连接的数据缓冲区的数据给客户端。举例而言,若通信服务器接收到客户端a发送的消息“〈root type ='login'from =’ a' />”,通信服务器根据客户端与双工连接的匹配关系从繁忙池中查找与客户端a匹配的双工连接,接下来在缓冲内存中查找所述双工连接的数据接收连接的数据缓冲区,从所述数据接收连接的数据缓冲区取出数据后,解析数据,得到“〈root type =,login' from =,a' />”,再将所述消息抛入业务逻辑处理。另夕卜,若通信服务器向客户端a发送消息“〈root type =’ text' say =’ hello' />”,通信服务器根据客户端与双工连接的匹配关系从繁忙池中找到客户端匹配的双工连接,接下来在缓冲内存中查找所述双工连接的数据发送连接的数据缓冲区,将 “〈root type =’ text' say =’ hello’ />”写入到所述数据发送连接的数据缓冲区后,发送所述数据发送连接的数据缓冲区的数据给客户端a。客户端与双工连接的数据缓冲区匹配关系如下表所示
客户端名称双工连接名称数据缓冲区(单位byte)a双工连接1数据接收连接/0 1024数据发送连接/1024 2048b双工连接2数据接收连接/2048 3072数据发送连接/3072 4096图2所示为根据本发明的较佳实施例提供的双工通信的通信服务器的示意图。如图2所示,本发明较佳实施例提供的双工通信的通信服务器包括分配模块1、创建模块2、收发模块3,其中所述分配模块1连接所述创建模块2,所述创建模块2连接所述收发模块3, 所述收发模块3,包括接收装置31及发送装置32,所述接收装置31连接所述发送装置32。 所述分配模块1,用于根据设定的最大客户端连接数分配缓冲内存大小。所述创建模块2, 用于创建双工连接并为所述双工连接分配数据缓冲区,其中,每个双工连接包括一个数据接收连接以及一个数据发送连接。所述接收装置31,用于从客户端接收消息时,从与所述客户端匹配的双工连接的数据接收连接对应的数据缓冲区获取接收的数据。所述发送装置 32,用于发送消息给所述客户端时,将发送的数据写入与所述客户端匹配的双工连接的数据发送连接对应的数据缓冲区,并将所述数据缓冲区的数据发送给所述客户端。综上所述,根据本发明较佳实施例提供的双工通信的方法及通信服务器,创建同时用于接收和发送数据的双エ连接,并为每个双エ连接分配数据缓冲区。当通信服务器从客户端接收消息吋,通信服务器从与客户端匹配的双エ连接的数据接收连接对应的数据缓冲区获取接收的数据,当通信服务器发送消息给客户端吋,通信服务器将发送的数据写入与客户端匹配的双エ连接的数据发送连接对应的数据缓冲区,并将数据缓冲区的数据发送给客户端。在双エ连接提高通信效率的同时,对数据缓冲做了统ー管理,防止了内存碎片的产生,提高了内存的访问速度。 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种双エ通信的方法,其特征在干,包括以下步骤通信服务器根据设定的最大客户端连接数分配缓冲内存大小;所述通信服务器创建双エ连接并为所述双エ连接分配数据缓冲区,其中,每个双エ连接包括一个数据接收连接以及ー个数据发送连接;当所述通信服务器从客户端接收消息吋,所述通信服务器从与所述客户端匹配的双エ 连接的数据接收连接对应的数据缓冲区获取接收的数据,当所述通信服务器发送消息给所述客户端吋,所述通信服务器将发送的数据写入与所述客户端匹配的双エ连接的数据发送连接对应的数据缓冲区,并将所述数据缓冲区的数据发送给所述客户端。
2.根据权利要求1所述的方法,其特征在干,所述通信服务器创建空闲池以及繁忙池, 其中,所述空闲池用于存放当前没有与客户端匹配的双エ连接,所述繁忙池用于存放正在与客户端匹配的双エ连接。
3.根据权利要求2所述的方法,其特征在干,当所述通信服务器侦听到所述客户端的通信连接时,所述通信服务器从所述空闲池取出一个双エ连接与所述客户端匹配,并将所述双エ连接放入所述繁忙池中。
4.根据权利要求2所述的方法,其特征在干,当所述客户端断开与所述通信服务器的通信后,所述通信服务器清空与所述客户端匹配的双エ连接对应的数据缓冲区,并将所述双エ连接从所述繁忙池移入所述空闲池中。
5.根据权利要求1所述的方法,其特征在干,所述缓冲内存大小为每个双エ连接预设的数据缓冲区大小与设定的最大客户端连接数的乘积。
6.根据权利要求1或5所述的方法,其特征在干,每个双エ连接的数据缓冲区的一半用于存放所述数据接收连接接收的数据,另一半用于存放数据发送连接发送的数据。
7.根据权利要求1或5所述的方法,其特征在干,所述双エ连接的个数与设定的最大客户端连接数相等。
8.—种双エ通信的通信服务器,其特征在干,包括分配模块、创建模块、收发模块,其中所述分配模块连接所述创建模块,所述创建模块连接所述收发模块,所述收发模块,包括接收装置及发送装置,所述接收装置连接所述发送装置,所述分配模块,用于根据设定的最大客户端连接数分配缓冲内存大小;所述创建模块,用于创建双エ连接并为所述双エ连接分配数据缓冲区,其中,每个双エ 连接包括一个数据接收连接以及ー个数据发送连接;所述接收装置,用于从客户端接收消息时,从与所述客户端匹配的双エ连接的数据接收连接对应的数据缓冲区获取接收的数据;所述发送装置,用于发送消息给所述客户端时,将发送的数据写入与所述客户端匹配的双ェ连接的数据发送连接对应的数据缓冲区,并将所述数据缓冲区的数据发送给所述客户端。
全文摘要
本发明提供一种双工通信的方法及通信服务器,上述方法包括以下步骤。通信服务器根据设定的最大客户端连接数分配缓冲内存大小。所述通信服务器创建双工连接并为所述双工连接分配数据缓冲区,其中,每个双工连接包括一个数据接收连接以及一个数据发送连接。当所述通信服务器从客户端接收消息时,所述通信服务器从与所述客户端匹配的双工连接的数据接收连接对应的数据缓冲区获取接收的数据,当所述通信服务器发送消息给所述客户端时,所述通信服务器将发送的数据写入与所述客户端匹配的双工连接的数据发送连接对应的数据缓冲区,并将所述数据缓冲区的数据发送给所述客户端。
文档编号H04L5/14GK102546140SQ20121000551
公开日2012年7月4日 申请日期2012年1月10日 优先权日2012年1月10日
发明者胡加明 申请人:苏州阔地网络科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1