專利名稱:一種雙工通信的方法及通信服務器的制作方法
技術領域:
本發(fā)明屬于通信領域,尤其涉及一種雙工通信的方法及通信服務器。
背景技術:
隨著網(wǎng)絡化社會的不斷進步,越來越多的網(wǎng)絡通訊工具應用到工作和生活中,比如飛信、MSN和一些企業(yè)版應用軟件等。在目前的即時通信應用中,客戶端與通信服務器的之間建立的某一連接在同一時間點只能單獨發(fā)送或單獨接收數(shù)據(jù),不能同時接收和發(fā)送數(shù)據(jù),極大地降低了通信效率。另外,當有大量客戶端同時連接通信服務器時,通信服務器會產(chǎn)生大量連接,如果不對這些連接的數(shù)據(jù)緩沖區(qū)統(tǒng)一管理,將產(chǎn)生大量的內(nèi)存碎片,降低了連接數(shù)據(jù)緩沖區(qū)的訪問速度,嚴重時甚至會導致通信服務器崩潰。
發(fā)明內(nèi)容
本發(fā)明提供一種雙工通信的方法及通信服務器以解決上述問題。本發(fā)明提供一種雙工通信的方法,包括以下步驟。通信服務器根據(jù)設定的最大客戶端連接數(shù)分配緩沖內(nèi)存大小。所述通信服務器創(chuàng)建雙工連接并為所述雙工連接分配數(shù)據(jù)緩沖區(qū),其中,每個雙工連接包括一個數(shù)據(jù)接收連接以及一個數(shù)據(jù)發(fā)送連接。當所述通信服務器從客戶端接收消息時,所述通信服務器從與所述客戶端匹配的雙工連接的數(shù)據(jù)接收連接對應的數(shù)據(jù)緩沖區(qū)獲取接收的數(shù)據(jù),當所述通信服務器發(fā)送消息給所述客戶端時,所述通信服務器將發(fā)送的數(shù)據(jù)寫入與所述客戶端匹配的雙工連接的數(shù)據(jù)發(fā)送連接對應的數(shù)據(jù)緩沖區(qū),并將所述數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)發(fā)送給所述客戶端。本發(fā)明提供一種雙工通信的通信服務器,包括分配模塊、創(chuàng)建模塊、收發(fā)模塊,其中所述分配模塊連接所述創(chuàng)建模塊,所述創(chuàng)建模塊連接所述收發(fā)模塊,所述收發(fā)模塊,包括接收裝置及發(fā)送裝置,所述接收裝置連接所述發(fā)送裝置。所述分配模塊,用于根據(jù)設定的最大客戶端連接數(shù)分配緩沖內(nèi)存大小。所述創(chuàng)建模塊,用于創(chuàng)建雙工連接并為所述雙工連接分配數(shù)據(jù)緩沖區(qū),其中,每個雙工連接包括一個數(shù)據(jù)接收連接以及一個數(shù)據(jù)發(fā)送連接。所述接收裝置,用于從客戶端接收消息時,從與所述客戶端匹配的雙工連接的數(shù)據(jù)接收連接對應的數(shù)據(jù)緩沖區(qū)獲取接收的數(shù)據(jù)。所述發(fā)送裝置,用于發(fā)送消息給所述客戶端時,將發(fā)送的數(shù)據(jù)寫入與所述客戶端匹配的雙工連接的數(shù)據(jù)發(fā)送連接對應的數(shù)據(jù)緩沖區(qū),并將所述數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)發(fā)送給所述客戶端。相較于先前技術,根據(jù)本發(fā)明提供的雙工通信的方法及通信服務器,創(chuàng)建同時用于接收和發(fā)送數(shù)據(jù)的雙工連接,并為每個雙工連接分配數(shù)據(jù)緩沖區(qū),能夠同時進行收發(fā)數(shù)據(jù),提高了通信效率。當通信服務器從客戶端接收消息時,通信服務器從與客戶端匹配的雙工連接的數(shù)據(jù)接收連接對應的數(shù)據(jù)緩沖區(qū)獲取接收的數(shù)據(jù),當通信服務器發(fā)送消息給客戶端時,通信服務器將發(fā)送的數(shù)據(jù)寫入與客戶端匹配的雙工連接的數(shù)據(jù)發(fā)送連接對應的數(shù)據(jù)緩沖區(qū),并將數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)發(fā)送給客戶端。以上對數(shù)據(jù)緩沖區(qū)的統(tǒng)一管理,有效防止了內(nèi)存碎片的產(chǎn)生,并且大大提高了服務器尋址速度。
此處所說明的附圖用來提供對本發(fā)明的進ー步理解,構成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構成對本發(fā)明的不當限定。在附圖中圖1所示為根據(jù)本發(fā)明的較佳實施例提供的雙エ通信的方法的流程圖;圖2所示為根據(jù)本發(fā)明的較佳實施例提供的雙エ通信的通信服務器的示意圖。
具體實施例方式下文中將參考附圖并結合實施例來詳細說明本發(fā)明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。圖1所示為根據(jù)本發(fā)明的較佳實施例提供的雙エ通信的方法的流程圖。如圖1所示,本發(fā)明較佳實施例提供的雙エ通信的方法包括步驟101 103。步驟101 通信服務器根據(jù)設定的最大客戶端連接數(shù)分配緩沖內(nèi)存大小。具體而言,每臺通信服務器具有最大客戶端連接數(shù),根據(jù)所述最大客戶端連接數(shù)分配緩沖內(nèi)存大小。步驟102 所述通信服務器創(chuàng)建雙エ連接并為所述雙エ連接分配數(shù)據(jù)緩沖區(qū),其中,每個雙エ連接包括一個數(shù)據(jù)接收連接以及ー個數(shù)據(jù)發(fā)送連接。具體而言,通信服務器創(chuàng)建雙エ連接,每個雙エ連接包括一個數(shù)據(jù)接收連接以及一個數(shù)據(jù)發(fā)送連接,所述雙エ連接的個數(shù)與設定的最大客戶端連接數(shù)相等。同吋,所述通信服務器創(chuàng)建空閑池以及繁忙池,其中,所述空閑池用于存放當前沒有與客戶端匹配的雙 エ連接,所述繁忙池用于存放正在與客戶端匹配的雙エ連接。當所述通信服務器偵聽到所述客戶端的通信連接時,所述通信服務器從所述空閑池取出一個雙エ連接與所述客戶端匹配,并將所述雙エ連接放入所述繁忙池中。當所述客戶端斷開與所述通信服務器的通信后, 所述通信服務器清空與所述客戶端匹配的雙エ連接對應的數(shù)據(jù)緩沖區(qū),并將所述雙エ連接從所述繁忙池移入所述空閑池中。所述通信服務器創(chuàng)建雙エ連接后,為所述雙エ連接分配數(shù)據(jù)緩沖區(qū),所述雙エ連接的數(shù)據(jù)緩沖區(qū),一半用于存放所述數(shù)據(jù)接收連接接收的數(shù)據(jù),另一半用于存放數(shù)據(jù)發(fā)送連接發(fā)送的數(shù)據(jù)。所述雙エ連接的數(shù)據(jù)緩沖區(qū)大小乘以最大客戶端連接數(shù),即為通信服務器分配的緩沖內(nèi)存大小。舉例而言,設定通信服務器的最大客戶端連接數(shù)為1000,所述通信服務器為每個雙エ連接分配的數(shù)據(jù)緩沖區(qū)大小為2048byte,則通信服務器分配的緩沖內(nèi)存大小為 1000*2048byte。若第一個雙エ連接的數(shù)據(jù)緩沖區(qū)為0 2048byte,則所述第一個雙エ連接的數(shù)據(jù)接收連接所對應的緩沖區(qū)為0 10MByte、數(shù)據(jù)發(fā)送連接所對應的緩沖區(qū)為IOM 2048Byte。若第二個雙エ連接的數(shù)據(jù)緩沖區(qū)為2048 4096Byte,則所述第二個雙エ連接的數(shù)據(jù)接收連接所對應的緩沖區(qū)為2048 3072Byte、數(shù)據(jù)發(fā)送連接所對應的緩沖區(qū)為 3072 4096Byte。依次類推,直到將所有雙エ連接的數(shù)據(jù)緩沖區(qū)分配完畢。步驟103 當所述通信服務器從客戶端接收消息吋,所述通信服務器從與所述客戶端匹配的雙ェ連接的數(shù)據(jù)接收連接對應的數(shù)據(jù)緩沖區(qū)獲取接收的數(shù)據(jù),當所述通信服務器發(fā)送消息給所述客戶端時,所述通信服務器將發(fā)送的數(shù)據(jù)寫入與所述客戶端匹配的雙ェ連接的數(shù)據(jù)發(fā)送連接對應的數(shù)據(jù)緩沖區(qū),并將所述數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)發(fā)送給所述客戶端。具體而言,通信服務器從客戶端接收消息時,所述通信服務器從繁忙池中找到與所述客戶端匹配的雙工連接,并在緩沖內(nèi)存中查找該雙工連接的數(shù)據(jù)接收連接的數(shù)據(jù)緩沖區(qū),從所述數(shù)據(jù)接收連接的數(shù)據(jù)緩沖區(qū)中取出數(shù)據(jù)后,解析數(shù)據(jù),并進行業(yè)務邏輯處理。若通信服務器發(fā)送消息給客戶端,所述通信服務器首先從繁忙池中找到與所述客戶端匹配的雙工連接,并在緩沖內(nèi)存中查找該雙工連接的數(shù)據(jù)發(fā)送連接的數(shù)據(jù)緩沖區(qū),將要發(fā)送的數(shù)據(jù)寫入所述數(shù)據(jù)發(fā)送連接的數(shù)據(jù)緩沖區(qū),然后發(fā)送所述數(shù)據(jù)發(fā)送連接的數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)給客戶端。舉例而言,若通信服務器接收到客戶端a發(fā)送的消息“〈root type ='login'from =’ a' />”,通信服務器根據(jù)客戶端與雙工連接的匹配關系從繁忙池中查找與客戶端a匹配的雙工連接,接下來在緩沖內(nèi)存中查找所述雙工連接的數(shù)據(jù)接收連接的數(shù)據(jù)緩沖區(qū),從所述數(shù)據(jù)接收連接的數(shù)據(jù)緩沖區(qū)取出數(shù)據(jù)后,解析數(shù)據(jù),得到“〈root type =,login' from =,a' />”,再將所述消息拋入業(yè)務邏輯處理。另夕卜,若通信服務器向客戶端a發(fā)送消息“〈root type =’ text' say =’ hello' />”,通信服務器根據(jù)客戶端與雙工連接的匹配關系從繁忙池中找到客戶端匹配的雙工連接,接下來在緩沖內(nèi)存中查找所述雙工連接的數(shù)據(jù)發(fā)送連接的數(shù)據(jù)緩沖區(qū),將 “〈root type =’ text' say =’ hello’ />”寫入到所述數(shù)據(jù)發(fā)送連接的數(shù)據(jù)緩沖區(qū)后,發(fā)送所述數(shù)據(jù)發(fā)送連接的數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)給客戶端a??蛻舳伺c雙工連接的數(shù)據(jù)緩沖區(qū)匹配關系如下表所示
客戶端名稱雙工連接名稱數(shù)據(jù)緩沖區(qū)(單位byte)a雙工連接1數(shù)據(jù)接收連接/0 1024數(shù)據(jù)發(fā)送連接/1024 2048b雙工連接2數(shù)據(jù)接收連接/2048 3072數(shù)據(jù)發(fā)送連接/3072 4096圖2所示為根據(jù)本發(fā)明的較佳實施例提供的雙工通信的通信服務器的示意圖。如圖2所示,本發(fā)明較佳實施例提供的雙工通信的通信服務器包括分配模塊1、創(chuàng)建模塊2、收發(fā)模塊3,其中所述分配模塊1連接所述創(chuàng)建模塊2,所述創(chuàng)建模塊2連接所述收發(fā)模塊3, 所述收發(fā)模塊3,包括接收裝置31及發(fā)送裝置32,所述接收裝置31連接所述發(fā)送裝置32。 所述分配模塊1,用于根據(jù)設定的最大客戶端連接數(shù)分配緩沖內(nèi)存大小。所述創(chuàng)建模塊2, 用于創(chuàng)建雙工連接并為所述雙工連接分配數(shù)據(jù)緩沖區(qū),其中,每個雙工連接包括一個數(shù)據(jù)接收連接以及一個數(shù)據(jù)發(fā)送連接。所述接收裝置31,用于從客戶端接收消息時,從與所述客戶端匹配的雙工連接的數(shù)據(jù)接收連接對應的數(shù)據(jù)緩沖區(qū)獲取接收的數(shù)據(jù)。所述發(fā)送裝置 32,用于發(fā)送消息給所述客戶端時,將發(fā)送的數(shù)據(jù)寫入與所述客戶端匹配的雙工連接的數(shù)據(jù)發(fā)送連接對應的數(shù)據(jù)緩沖區(qū),并將所述數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)發(fā)送給所述客戶端。綜上所述,根據(jù)本發(fā)明較佳實施例提供的雙工通信的方法及通信服務器,創(chuàng)建同時用于接收和發(fā)送數(shù)據(jù)的雙エ連接,并為每個雙エ連接分配數(shù)據(jù)緩沖區(qū)。當通信服務器從客戶端接收消息吋,通信服務器從與客戶端匹配的雙エ連接的數(shù)據(jù)接收連接對應的數(shù)據(jù)緩沖區(qū)獲取接收的數(shù)據(jù),當通信服務器發(fā)送消息給客戶端吋,通信服務器將發(fā)送的數(shù)據(jù)寫入與客戶端匹配的雙エ連接的數(shù)據(jù)發(fā)送連接對應的數(shù)據(jù)緩沖區(qū),并將數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)發(fā)送給客戶端。在雙エ連接提高通信效率的同時,對數(shù)據(jù)緩沖做了統(tǒng)ー管理,防止了內(nèi)存碎片的產(chǎn)生,提高了內(nèi)存的訪問速度。 以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領域的技術人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
權利要求
1.一種雙エ通信的方法,其特征在干,包括以下步驟通信服務器根據(jù)設定的最大客戶端連接數(shù)分配緩沖內(nèi)存大??;所述通信服務器創(chuàng)建雙エ連接并為所述雙エ連接分配數(shù)據(jù)緩沖區(qū),其中,每個雙エ連接包括一個數(shù)據(jù)接收連接以及ー個數(shù)據(jù)發(fā)送連接;當所述通信服務器從客戶端接收消息吋,所述通信服務器從與所述客戶端匹配的雙エ 連接的數(shù)據(jù)接收連接對應的數(shù)據(jù)緩沖區(qū)獲取接收的數(shù)據(jù),當所述通信服務器發(fā)送消息給所述客戶端吋,所述通信服務器將發(fā)送的數(shù)據(jù)寫入與所述客戶端匹配的雙エ連接的數(shù)據(jù)發(fā)送連接對應的數(shù)據(jù)緩沖區(qū),并將所述數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)發(fā)送給所述客戶端。
2.根據(jù)權利要求1所述的方法,其特征在干,所述通信服務器創(chuàng)建空閑池以及繁忙池, 其中,所述空閑池用于存放當前沒有與客戶端匹配的雙エ連接,所述繁忙池用于存放正在與客戶端匹配的雙エ連接。
3.根據(jù)權利要求2所述的方法,其特征在干,當所述通信服務器偵聽到所述客戶端的通信連接時,所述通信服務器從所述空閑池取出一個雙エ連接與所述客戶端匹配,并將所述雙エ連接放入所述繁忙池中。
4.根據(jù)權利要求2所述的方法,其特征在干,當所述客戶端斷開與所述通信服務器的通信后,所述通信服務器清空與所述客戶端匹配的雙エ連接對應的數(shù)據(jù)緩沖區(qū),并將所述雙エ連接從所述繁忙池移入所述空閑池中。
5.根據(jù)權利要求1所述的方法,其特征在干,所述緩沖內(nèi)存大小為每個雙エ連接預設的數(shù)據(jù)緩沖區(qū)大小與設定的最大客戶端連接數(shù)的乘積。
6.根據(jù)權利要求1或5所述的方法,其特征在干,每個雙エ連接的數(shù)據(jù)緩沖區(qū)的一半用于存放所述數(shù)據(jù)接收連接接收的數(shù)據(jù),另一半用于存放數(shù)據(jù)發(fā)送連接發(fā)送的數(shù)據(jù)。
7.根據(jù)權利要求1或5所述的方法,其特征在干,所述雙エ連接的個數(shù)與設定的最大客戶端連接數(shù)相等。
8.—種雙エ通信的通信服務器,其特征在干,包括分配模塊、創(chuàng)建模塊、收發(fā)模塊,其中所述分配模塊連接所述創(chuàng)建模塊,所述創(chuàng)建模塊連接所述收發(fā)模塊,所述收發(fā)模塊,包括接收裝置及發(fā)送裝置,所述接收裝置連接所述發(fā)送裝置,所述分配模塊,用于根據(jù)設定的最大客戶端連接數(shù)分配緩沖內(nèi)存大??;所述創(chuàng)建模塊,用于創(chuàng)建雙エ連接并為所述雙エ連接分配數(shù)據(jù)緩沖區(qū),其中,每個雙エ 連接包括一個數(shù)據(jù)接收連接以及ー個數(shù)據(jù)發(fā)送連接;所述接收裝置,用于從客戶端接收消息時,從與所述客戶端匹配的雙エ連接的數(shù)據(jù)接收連接對應的數(shù)據(jù)緩沖區(qū)獲取接收的數(shù)據(jù);所述發(fā)送裝置,用于發(fā)送消息給所述客戶端時,將發(fā)送的數(shù)據(jù)寫入與所述客戶端匹配的雙ェ連接的數(shù)據(jù)發(fā)送連接對應的數(shù)據(jù)緩沖區(qū),并將所述數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)發(fā)送給所述客戶端。
全文摘要
本發(fā)明提供一種雙工通信的方法及通信服務器,上述方法包括以下步驟。通信服務器根據(jù)設定的最大客戶端連接數(shù)分配緩沖內(nèi)存大小。所述通信服務器創(chuàng)建雙工連接并為所述雙工連接分配數(shù)據(jù)緩沖區(qū),其中,每個雙工連接包括一個數(shù)據(jù)接收連接以及一個數(shù)據(jù)發(fā)送連接。當所述通信服務器從客戶端接收消息時,所述通信服務器從與所述客戶端匹配的雙工連接的數(shù)據(jù)接收連接對應的數(shù)據(jù)緩沖區(qū)獲取接收的數(shù)據(jù),當所述通信服務器發(fā)送消息給所述客戶端時,所述通信服務器將發(fā)送的數(shù)據(jù)寫入與所述客戶端匹配的雙工連接的數(shù)據(jù)發(fā)送連接對應的數(shù)據(jù)緩沖區(qū),并將所述數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)發(fā)送給所述客戶端。
文檔編號H04L5/14GK102546140SQ20121000551
公開日2012年7月4日 申請日期2012年1月10日 優(yōu)先權日2012年1月10日
發(fā)明者胡加明 申請人:蘇州闊地網(wǎng)絡科技有限公司