国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種xmpp協(xié)議傳輸數(shù)據(jù)壓縮與解壓縮方法

      文檔序號:7704216閱讀:259來源:國知局

      專利名稱::一種xmpp協(xié)議傳輸數(shù)據(jù)壓縮與解壓縮方法
      技術(shù)領(lǐng)域
      :本發(fā)明涉及網(wǎng)絡(luò)通訊
      技術(shù)領(lǐng)域
      ,具體涉及一種XMPP協(xié)議傳輸數(shù)據(jù)壓縮與解壓縮方法。
      背景技術(shù)
      :XMPP協(xié)議(extensibleMessagingandPresenceProtocol,可擴展消息處理現(xiàn)場協(xié)議)是一種基于XML語言(extensibleMarkupLanguage,可擴展標記語言)的近端串流式即時通信協(xié)議。它將現(xiàn)場和上下文敏感信息標記嵌入到XML結(jié)構(gòu)化數(shù)據(jù)中,使得人與人之間、應(yīng)用系統(tǒng)之間以及人與應(yīng)用系統(tǒng)之間能即時相互通信。XMPP協(xié)議已被批準為互聯(lián)網(wǎng)即時通信協(xié)議標準。XMPP協(xié)議最大的特點就是具有非常好的擴展性,通過節(jié)點的概念能夠很容易的擴展協(xié)議,因為XMPP協(xié)議采用XML語言描述通訊信息,因此具備了XML良好擴展性的特點,然而也不可避免地具有相應(yīng)的缺陷XML語言本身是字符串形式的,因此XMPP協(xié)議通訊信息的數(shù)據(jù)量要比二進制通訊協(xié)議數(shù)據(jù)量大得多;另外在使用XMPP協(xié)議傳輸二進制數(shù)據(jù)時,需要將二進制數(shù)據(jù)轉(zhuǎn)換為BASE64編碼,而BASE64編碼數(shù)據(jù)要比原來的二進制數(shù)據(jù)大得多。為了既能保持XMPP協(xié)議良好的擴展性,同時又能做到使即時通訊信息更加輕便,使二進制數(shù)據(jù)傳輸更加便捷,我們需要對使用XMPP協(xié)議的方法進行改進。
      發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問題是提供一種XMPP協(xié)議傳輸數(shù)據(jù)壓縮與解壓縮方法,克服現(xiàn)有技術(shù)XMPP協(xié)議即時通訊信息數(shù)據(jù)量過大的缺陷以及在傳輸二進制數(shù)據(jù)時必須將二進制數(shù)據(jù)轉(zhuǎn)換成BASE64編碼的缺陷。本發(fā)明為解決上述技術(shù)問題所采用的技術(shù)方案為一種XMPP協(xié)議傳輸數(shù)據(jù)壓縮方法,包括步驟Al、將XMPP協(xié)i義使用的字符串分別進行編碼,所述編碼組成編碼表;A2、在傳輸XMPP協(xié)議即時通訊信息時,查詢所述編碼表,將所述即時通訊信息中的XMPP協(xié)議字符串由相應(yīng)的所述編碼替換,形成壓縮即時通訊信息;A3、傳輸所述壓縮即時通訊信息。所述的XMPP協(xié)議傳輸數(shù)據(jù)壓縮方法,其中所述編碼的字寬設(shè)為一個字節(jié)。所述的XMPP協(xié)議傳輸數(shù)據(jù)壓縮方法,其中所述步驟A2包括步驟Bl、設(shè)置傳輸緩存Buffer;B2、將所述即時通訊信息中的協(xié)議頭數(shù)據(jù)原樣寫入所述傳輸緩存Buffer;B3、依次對所述即時通訊信息中的每個節(jié)點進行所述編碼表的查詢和所述編碼的替換,并將替換后的壓縮數(shù)據(jù)寫入所述傳輸緩存Buffer;B4、將所述即時通訊信息中的擴展數(shù)據(jù)長度字段的數(shù)值和擴展數(shù)據(jù)寫入所述傳輸緩存Buffer。所述的XMPP協(xié)議傳輸數(shù)據(jù)壓縮方法,其中所述步驟B3包括步驟Cl、在所述編碼表中查詢所述節(jié)點的節(jié)點名編碼;C2、如果存在節(jié)點名編碼,設(shè)置所述節(jié)點的節(jié)點名類型的值為0,否則設(shè)置所述節(jié)點的節(jié)點名類型的值1,將節(jié)點名類型的值寫入所述傳輸i爰存Buffer;C3、如果節(jié)點名類型的值為0,將節(jié)點名編碼寫入所述傳輸緩存Buffer;C4、如果節(jié)點名類型的值為1,則先將節(jié)點名長度的值寫入所述傳輸緩存Buffer,然后將節(jié)點名字符串寫入所述傳輸緩存Buffer;C5、統(tǒng)計所述節(jié)點的節(jié)點屬性個數(shù),將節(jié)點屬性個數(shù)寫入所述傳輸緩存Buffer,如果節(jié)點屬性個數(shù)大于0,依次對每個節(jié)點屬性進行所述編碼表的查詢和所述編碼的替換,并將替換后的壓縮數(shù)據(jù)寫入所述傳輸緩存Buffer;C6、統(tǒng)計所述節(jié)點的子節(jié)點個數(shù),將子節(jié)點個^t寫入所述傳輸緩存Buffer;C7、如果子節(jié)點個數(shù)大于0,依次對每個子節(jié)點進行所述編碼表的查詢和所述編碼的替換,并將替換后的壓縮數(shù)據(jù)寫入所述傳輸緩存Buffer;C8、將所述節(jié)點的數(shù)據(jù)長度的值寫入所述傳輸緩存Buffer;C9、將所述節(jié)點的數(shù)據(jù)寫入所述傳輸緩存Buffer。所述的XMPP協(xié)議傳輸數(shù)據(jù)壓縮方法,其中所述步驟C5包括步驟Dl、在所述編碼表中查詢所述節(jié)點屬性的屬性名編碼,如果存在屬性名編碼,i殳置所述節(jié)點屬性的屬性名類型的值為0,否則設(shè)置所述節(jié)點屬性的屬性名類型的值為1,將屬性名類型的值寫入所述傳輸緩存Buffer;D2、如果屬性名類型的值為0,將屬性名編碼寫入所述傳輸緩存Buffer,否則如果屬性名類型的值為1,則先將屬性名長度的值8寫入所述傳輸緩存Buffer,然后將屬性名字符串寫入所述傳輸緩存Buffer;D3、在所述編碼表中查詢所述節(jié)點屬性的屬性值編碼,如果存在屬性值編碼,設(shè)置所述節(jié)點屬性的屬性值類型的值為0,否則設(shè)置所述節(jié)點屬性的屬性值類型的值為1,將屬性值類型的值寫入所述傳輸緩存Buffer;D4、如果屬性值類型的值為0,將屬性值編碼寫入所述傳輸緩存Buffer,否則如果屬性值類型的值為1,則先將屬性值長度的值寫入所述傳輸緩存Buffer,然后將屬性值字符串寫入所述傳輸緩存Buffer。所述的XMPP協(xié)議傳輸數(shù)據(jù)壓縮方法,其中所述步驟C7包括步驟執(zhí)行步驟C1至C9。一種XMPP協(xié)議傳輸數(shù)據(jù)解壓縮方法,包括步驟El、在接收所述壓縮即時通訊信息的端點設(shè)置所述編碼表;E2、查詢所述編碼表,將所述壓縮即時通訊信息中的所述編碼由相應(yīng)的XMPP協(xié)議字符串替換,形成所述即時通訊信息。所述的XMPP協(xié)議傳輸數(shù)據(jù)解壓縮方法,其中所述步驟E2包括步驟Fl、設(shè)置接收緩存Buffer1;F2、將所述壓縮即時通訊信息中的協(xié)議頭數(shù)據(jù)原樣寫入所述接收緩存Bufferl;F3、依次對所述壓縮即時通訊信息中的每個節(jié)點進行所述編碼表的查詢和相應(yīng)的XMPP協(xié)議字符串的替換,并將替換后的XMPP協(xié)議字符串寫入所述接收緩存Bufferl;F4、將所述壓縮即時通訊信息的擴展數(shù)據(jù)長度字段的數(shù)值和擴展數(shù)據(jù)寫入所述接收緩存Buffer1。所述的XMPP協(xié)議傳輸數(shù)據(jù)解壓縮方法,其中包括步驟E3:調(diào)用XMPP協(xié)議解析器對所述即時通訊信息進4于解析。本發(fā)明的有益效果由于XMPP協(xié)議即時通訊信息中絕大部分是通用的字符串,因此本發(fā)明采用對常用XMPP協(xié)議字符串進行編碼,然后通過查詢編碼表對即時通訊信息進行壓縮,這樣就大大減少了XMPP協(xié)議即時通訊信息的數(shù)據(jù)量,并且本發(fā)明對XMPP協(xié)議進行擴展,增加了擴展數(shù)據(jù)長度字段和擴展數(shù)據(jù)字段,壓縮即時通訊信息可以直接攜帶二進制數(shù)據(jù)而不用進行BASE64編碼的轉(zhuǎn)換,既減少了二進制數(shù)據(jù)到BASE64編碼轉(zhuǎn)換的資源消耗,也大大減少了相應(yīng)的傳輸數(shù)據(jù)量,這樣就大大提高了即時通訊的效率,本發(fā)明是XMPP協(xié)議應(yīng)用的重大進步。本發(fā)明包括如下附圖圖1為本發(fā)明XMPP協(xié)議即時通訊信息協(xié)議頭的數(shù)據(jù)結(jié)構(gòu)示意圖;圖2為本發(fā)明XMPP協(xié)議即時通訊信息中屬性的數(shù)據(jù)結(jié)構(gòu)示意圖;圖3為本發(fā)明XMPP協(xié)議即時通訊信息中節(jié)點的數(shù)據(jù)結(jié)構(gòu)示意圖;圖4為本發(fā)明XMPP協(xié)議即時通訊信息數(shù)據(jù)結(jié)構(gòu)示意圖;圖5為本發(fā)明壓縮后即時通訊信息的示意圖;圖6為本發(fā)明應(yīng)用XMPP協(xié)議傳輸數(shù)據(jù)壓縮和解壓縮方法的交互場景示意圖。具體實施例方式下面根據(jù)附圖和實施例對本發(fā)明作進一步詳細說明10對XMPP協(xié)議進行充分分析后,可以總結(jié)出XMPP協(xié)議使用字符串的規(guī)律,比如請求節(jié)點名為iq,消息的節(jié)點名為message,等等,而且使用特殊字符串的節(jié)點名、命名空間、屬性名是有限的,我們可以對這些有規(guī)律的字符串進行編碼。編碼表的建立編碼表是XMPP協(xié)議即時通訊信息壓縮和解壓縮的關(guān)鍵。根據(jù)XMPP協(xié)議的特點,對XMPP協(xié)議中的常用字符串進行編碼,根據(jù)整理,編碼遠不到256個,所以只要一個字節(jié)就可以實現(xiàn)XMPP協(xié)議中常用字符串的編碼,而且還有剩余的編碼供以后擴展,通過編碼表代替不定長的字符串數(shù)據(jù),大大減少數(shù)據(jù)量,根據(jù)XMPP協(xié)議的特點進行分類編碼如下<table>tableseeoriginaldocumentpage11</column></row><table>17status狀態(tài)18priority優(yōu)先級19gone處理后20internal-server-error服務(wù)錯誤21forbidden禁止22conflict沖突23error錯誤24active活躍的25default默認26value值27action行為28order命令29item-not-found指定項沒有找到30bad-request錯誤請求31presence-out離線32service-unavailable服務(wù)不存在33identity身份34field領(lǐng)域,局部35feature特色36X節(jié)點x37password密碼38uscrnamc用戶名49resource資源40registration-required注冊請求41delay延遲42history歷史43not-acceptable不接受44invite邀請45decline踢人12<table>tableseeoriginaldocumentpage13</column></row><table><table>tableseeoriginaldocumentpage14</column></row><table>屬性值編碼表<table>tableseeoriginaldocumentpage14</column></row><table>13jabber:iq:roster花名冊操作14jabber:x:offline離線消息15jabber:iq:agent代理工具16jabber:iq:agents有效代理組17jabber:x:delay顯示的對象18jabber:iq:version版本請求19jabber:iq:time時間請求20vcard陽temp資料請求21jabber:iq:private私有數(shù)據(jù)存儲22jabber:iq:search査找23jabber:iq:oob綁定數(shù)據(jù)輸出24jabber:x:oob綁定數(shù)據(jù)輸出25jabber:iq:admin管理員26jabber:iq:filter過濾27jabber:iq:auth:Ok驗證通過28jabber:iq:browse瀏覽請求29jabber:x:event事件消息30jabber:iq:conference會議請求31jabber:x:signed標記在線狀態(tài)32jabber:x:encrypted加密消息33jabber:iqsgateway用戶地址網(wǎng)關(guān)34jabber:iq:last上次使用時間35jabber:x:envelope消息封包36jabber:x:expire消息終止37http:〃jabber.org/protoco!/muc會議室請求38http:〃jabber.org/protocol/muc#admin會議室管理員39http:〃jabber.org/protocol/muc#owner會議室擁有者40http:〃jabber.org/protocol/nmc弁user會議室用戶41http:〃jabber.org/protocol/muc#rooininfo會議室信箱15<table>tableseeoriginaldocumentpage16</column></row><table>壓縮過程的實現(xiàn)XML的描述符具有樹形結(jié)構(gòu),除了對常用字符編碼外,還需要對XML的格式進行定義。XML描述符中有一個或多個節(jié)點,其中每個節(jié)點都包含O個或多個屬性和子節(jié)點,父子節(jié)點的類型是相同的,子節(jié)點的描述同父節(jié)點一樣,節(jié)點的屬性描述包含對屬性名和屬性值的描述。協(xié)議頭數(shù)據(jù)壓縮過程如圖1所示,即時通訊信息協(xié)議頭的數(shù)據(jù)結(jié)構(gòu)是固定的,長度為三個整型變量長度,共12個字節(jié),這個協(xié)議頭為自定義協(xié)議頭,做協(xié)議標識,第一個整型存儲協(xié)議代碼,其中第一個字節(jié)存儲英文字母X的ASCII碼,第二個字節(jié)存儲英文字母m的ASCII碼,第三、第四個字節(jié)存儲英文字母p的ASCII碼,第二個整型變量為版本號,為以后做版本兼容和識別處理,第三個整型變量為協(xié)議數(shù)據(jù)長度。(1)首先申請傳輸緩存(Buffer);(2)在傳輸緩存Buffer內(nèi)寫入?yún)f(xié)議代碼;(3)在傳輸緩存Buffer內(nèi)寫入?yún)f(xié)議版本;(4)在傳輸緩存Buffer內(nèi)寫入?yún)f(xié)議數(shù)據(jù)長度。屬性壓縮過程即時通訊信息中屬性的數(shù)據(jù)結(jié)構(gòu)如圖2所示。(1)在編碼表中查詢節(jié)點屬性的屬性值編碼,如果存在屬性值編碼,設(shè)置節(jié)點屬性的屬性值類型的值為0,否則設(shè)置節(jié)點屬性的屬性值類型的值為1,將屬性值類型的值寫入傳輸緩存Buffer;(2)如果屬性名類型的值為0,將屬性名編碼寫入傳輸緩存Buffer,否則如果屬性名類型的值為1,則先將屬性名長度的值寫入傳輸緩存Buffer,然后將屬性名字符串寫入傳輸緩存Buffer;(3)在編碼表中查詢節(jié)點屬性的屬性值編碼,如果存在屬性值編碼,設(shè)置節(jié)點屬性的屬性值類型的值為0,否則設(shè)置節(jié)點屬性的屬性值類型的值為l,將屬性值類型的值寫入傳輸緩存Buffer;(4)如果屬性值類型的值為0,將屬性值編碼寫入傳輸緩存Buffer,否則如果屬性值類型的值為1,則先將屬性值長度的值寫入傳輸緩存Buffer,然后將屬性值字符串寫入傳輸緩存Buffer。節(jié)點壓縮過程即時通訊信息中節(jié)點的數(shù)據(jù)結(jié)構(gòu)如圖3所示。(1)在編碼表中查詢節(jié)點的節(jié)點名編碼;17(2)如果存在節(jié)點名編碼,設(shè)置節(jié)點的節(jié)點名類型的值為0,否則設(shè)置節(jié)點的節(jié)點名類型的值1,將節(jié)點名類型的值寫入傳輸緩存Buffer;(3)如果節(jié)點名類型的值為0,將節(jié)點名編碼寫入傳輸緩存Buffer;(4)如果節(jié)點名類型的值為1,則先將節(jié)點名長度的值寫入傳輸緩存Buffer,然后將節(jié)點名字符串寫入傳輸緩存Buffer;(5)統(tǒng)計節(jié)點的節(jié)點屬性個數(shù),將節(jié)點屬性個數(shù)寫入傳輸緩存Buffer,如果節(jié)點屬性個數(shù)大于0,依次對每個節(jié)點屬性進行編碼表的查詢和編碼的替換,并將替換后的壓縮數(shù)據(jù)寫入傳輸緩存Buffer;(6)統(tǒng)計節(jié)點的子節(jié)點個數(shù),將子節(jié)點個數(shù)寫入傳輸緩存Buffer;(7)如果子節(jié)點個數(shù)大于0,依次對每個子節(jié)點進行編碼表的查詢和編碼的替換,并將替換后的壓縮數(shù)據(jù)寫入傳輸緩存Buffer;(8)將節(jié)點的數(shù)據(jù)長度的值寫入傳輸緩存Buffer;(9)將節(jié)點的數(shù)據(jù)寫入傳輸緩存Buffer。整個即時通訊信息的lt據(jù)結(jié)構(gòu)如圖4所示。調(diào)用前面敘述的各個壓縮過程來完成整個即時通訊信息的二進制數(shù)據(jù)序列化過程,最后將擴展數(shù)據(jù)長度寫入傳輸緩存Buffer,如果長度不為0,則將擴展數(shù)據(jù)寫入傳輸緩存Buffer,最后通過網(wǎng)絡(luò)將傳輸緩存Buffer內(nèi)的數(shù)據(jù)發(fā)送出去。解壓縮過程的實現(xiàn)從網(wǎng)絡(luò)底層接收到壓縮的數(shù)據(jù)后將數(shù)據(jù)存入接收緩存RecvBuffer中,解壓縮過程其實就是壓縮一個反過程,就是把RecvBuffer中的二進制數(shù)據(jù)進行反序列化,把二進制數(shù)據(jù)解析成XML流的過程。協(xié)議頭數(shù)據(jù)解壓縮過程(1)從RecvBuffer中讀取協(xié)議代碼;(2)從RecvBuffer讀取協(xié)議版本;18(3)從RecvBuffer讀取協(xié)議數(shù)據(jù)長度;(4)生成一個XML節(jié)點類型。屬性解壓縮過程(1)乂人RecvBuffer讀取屬性名類型;(2)如果是0(編碼類型),從編碼表中找到對應(yīng)的屬性名,否則讀取屬性名長度,讀取屬性名,假定屬性名為type;(3)從RecvBuffer讀取屬性值類型;(4)如果是編碼,則從編碼字典中得到屬性值,否則讀取屬性值長度,讀取屬性值,假定屬性值為data;(5)在當前的XML節(jié)點中添加一個屬性名為type,值為data的屬性。節(jié)點解壓縮過程(1)從RecvBuffer讀取節(jié)點名類型;(2)如果是編碼,則查詢編碼表得到真實的節(jié)點名,否則讀取節(jié)點名的長度,然后直接讀取節(jié)點名,假定節(jié)點名為nodename;(3)在XML節(jié)點當前層次中加入一個節(jié)點名為nodename的節(jié)點。(4)從RecvBuffer讀取屬性節(jié)點個數(shù);(5)如果個數(shù)不為0,循環(huán)調(diào)用屬性解壓縮過程來解壓縮屬性數(shù)據(jù);(6)從RecvBuffer讀取子節(jié)點個數(shù);(7)如果子節(jié)點個數(shù)不為O,則循環(huán)調(diào)用節(jié)點解壓縮過程來盡一步解壓縮;(8)從RecvBuffer讀取節(jié)點數(shù)據(jù)長度;(9)如果長度不為0,則讀取節(jié)點數(shù)據(jù)。整個協(xié)議數(shù)據(jù)的解壓縮過程(1)從RecvBuffer讀取協(xié)議頭數(shù)據(jù);(2)從RecvBuffer讀取節(jié)點個數(shù);(3)如果節(jié)點個數(shù)不為零,則循環(huán)調(diào)用節(jié)點解壓縮過程;(4)從RecvBuffer讀取擴展數(shù)據(jù)長度;(5)如杲擴展數(shù)據(jù)長度不為零,則從RecvBuffer中讀取擴展數(shù)據(jù),如果為零則結(jié)束解壓縮過程,得到XML格式節(jié)點數(shù)據(jù)和擴展數(shù)據(jù)。對于即時通訊信息<iq><queryxmlns="jabberd:iq:admin"type="get,,><query/><iq/>,共有63個字符,其壓縮后的數(shù)據(jù)格式如圖5所示,壓縮后字符數(shù)為52,除去協(xié)議頭字符數(shù)12、擴展數(shù)據(jù)字符數(shù)8,XMPP協(xié)議數(shù)據(jù)本身為32個字符,這個協(xié)議數(shù)據(jù)比較小,所以整體數(shù)據(jù)上看不出壓縮后的比率,但除去協(xié)議附加的消息外,XMPP協(xié)議的數(shù)據(jù)壓縮將近50%(32/63*100%),當XMPP協(xié)議數(shù)據(jù)很大時,協(xié)議頭和擴展數(shù)據(jù)占的比率就比較小,這樣壓縮比是比較高的。采取這樣的編碼后就可以在協(xié)議數(shù)據(jù)的擴展數(shù)據(jù)部分攜帶二進制數(shù)據(jù),這樣非常方便,因為在現(xiàn)實應(yīng)用中攜帶二進制的需求是比較大的,現(xiàn)在的XMPP協(xié)議采用進行BASE64的方式來傳輸二進制,這樣不僅使傳輸數(shù)據(jù)量增加,同時在發(fā)送前和接收后都需要對數(shù)據(jù)進行BASE64的編碼和解碼,這樣效率是相當?shù)偷?。如圖6所示是使用本發(fā)明XMPP協(xié)議傳輸數(shù)據(jù)壓縮和解壓縮方法的交互場景1、客戶端A——〉服務(wù)器A(1)客戶段A將XML節(jié)點(標準XMPP格式)進行壓縮(2)通過網(wǎng)絡(luò)TCP/IP協(xié)議將數(shù)據(jù)發(fā)送到服務(wù)器A(3)服務(wù)器A對數(shù)據(jù)進行解壓,到得XML數(shù)據(jù)節(jié)點(標準的XMPP格式)。2、服務(wù)器A——〉客戶端A(1)XML節(jié)點數(shù)據(jù)進行壓縮20(2)通過網(wǎng)絡(luò)TCP/IP協(xié)議將數(shù)據(jù)發(fā)送客戶端A(3)協(xié)議解壓成XML節(jié)點3、客戶端B—->服務(wù)器A(1)XML節(jié)點通過標準XML解析器解析成字符串流(2)通過網(wǎng)絡(luò)TCP/IP協(xié)議將數(shù)據(jù)發(fā)送到服務(wù)器A(3)服務(wù)器A標準XMPP協(xié)議網(wǎng)關(guān)將字符串流解析成XML節(jié)點4、服務(wù)器A——〉客戶端B(1)調(diào)用標準XMPP協(xié)議解析器將XML節(jié)點解析成字符串流(2)通過網(wǎng)絡(luò)TCP/IP協(xié)議將數(shù)據(jù)發(fā)送到客戶端B(3)通過標準XMPP協(xié)議解析器解析成XML節(jié)點5、客戶端A——>客戶端D(1)客戶端A將XMPP標準的XML節(jié)點數(shù)據(jù)進行壓縮(2)通過網(wǎng)絡(luò)TCP/IP協(xié)議將數(shù)據(jù)發(fā)送服務(wù)器A(3)服務(wù)器A進行協(xié)議解壓得到XML節(jié)點(4)調(diào)用XMPP協(xié)議解析器解析成標準字符串流(5)通過網(wǎng)絡(luò)TCP/IP協(xié)議將數(shù)據(jù)發(fā)送到客戶端D(6)客戶端D調(diào)用XMPP協(xié)議解析器解析成XML節(jié)點6、客戶端A--—>路由器1——>客戶端B(1)客戶端A將XMPP標準的XML節(jié)點數(shù)據(jù)進行壓縮(2)通過網(wǎng)絡(luò)TCP/IP協(xié)議將數(shù)據(jù)發(fā)送路由器1(3)路由器1進行協(xié)議解壓得到XML節(jié)點(4)路由器調(diào)用XMPP協(xié)議解析器解析成標準字符串流(5)通過網(wǎng)絡(luò)TCP/IP協(xié)議將數(shù)據(jù)發(fā)送到客戶B(6)客戶端B調(diào)用XMPP標準協(xié)議解析器解析成XML節(jié)點217、客戶端B——>路由器1——>客戶端A(1)客戶端B調(diào)用XMPP解析器將XML節(jié)點解析成字符串流(2)通過網(wǎng)絡(luò)TCP/IP協(xié)議將數(shù)據(jù)發(fā)送路由器1(3)路由器1進行協(xié)議進行解析得到XML節(jié)點(4)路由器1調(diào)用協(xié)議壓縮模塊將協(xié)議進行壓縮(5)通過網(wǎng)絡(luò)TCP/IP協(xié)議將數(shù)據(jù)發(fā)送客戶端A(6)客戶端A對協(xié)議進行解壓得到XML節(jié)點本領(lǐng)域技術(shù)人員不脫離本發(fā)明的實質(zhì)和精神,可以有多種變形方案實現(xiàn)本發(fā)明,以上所述僅為本發(fā)明較佳可行的實施例而已,并非因此局限本發(fā)明的權(quán)利范圍,凡運用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)變化,均包含于本發(fā)明的權(quán)利范圍之內(nèi)。權(quán)利要求1、一種XMPP協(xié)議傳輸數(shù)據(jù)壓縮方法,其特征在于,包括步驟A1、將XMPP協(xié)議使用的字符串分別進行編碼,所述編碼組成編碼表;A2、在傳輸XMPP協(xié)議即時通訊信息時,查詢所述編碼表,將所述即時通訊信息中的XMPP協(xié)議字符串由相應(yīng)的所述編碼替換,形成壓縮即時通訊信息;A3、傳輸所述壓縮即時通訊信息。2、根據(jù)權(quán)利要求1所述的XMPP協(xié)議傳輸數(shù)據(jù)壓縮方法,其特征在于所述編碼的字寬設(shè)為一個字節(jié)。3、根據(jù)權(quán)利要求1所述的XMPP協(xié)議傳輸數(shù)據(jù)壓縮方法,其特征在于,所述步驟A2包括步驟Bl、設(shè)置傳輸緩存Buffer;B2、將所述即時通訊信息中的協(xié)議頭數(shù)據(jù)原樣寫入所述傳輸緩存Buffer;B3、依次對所述即時通訊信息中的每個節(jié)點進行所述編碼表的查詢和所述編碼的替換,并將替換后的壓縮數(shù)據(jù)寫入所述傳輸緩存Buffer;B4、將所述即時通訊信息中的擴展數(shù)據(jù)長度字段的數(shù)值和擴展數(shù)據(jù)'寫入所述傳輸緩存Buffer。4、根據(jù)權(quán)利要求3所述的XMPP協(xié)議傳輸數(shù)據(jù)壓縮方法,其特征在于,所述步驟B3包括步驟Cl、在所述編碼表中查詢所述節(jié)點的節(jié)點名編碼;C2、如果存在節(jié)點名編碼,設(shè)置所述節(jié)點的節(jié)點名類型的值為0,否則設(shè)置所述節(jié)點的節(jié)點名類型的值1,將節(jié)點名類型的值寫入所述傳輸緩存Buffer;C3、如果節(jié)點名類型的值為0,將節(jié)點名編碼寫入所述傳輸緩存Buffer;C4、如果節(jié)點名類型的值為1,則先將節(jié)點名長度的值寫入所述傳輸緩存Buffer,然后將節(jié)點名字符串寫入所述傳輸緩存Buffer;C5、統(tǒng)計所述節(jié)點的節(jié)點屬性個數(shù),將節(jié)點屬性個數(shù)寫入所述傳輸緩存Buffer,如果節(jié)點屬性個數(shù)大于0,依次對每個節(jié)點屬性進行所述編碼表的查詢和所述編碼的替換,并將替換后的壓縮數(shù)據(jù)寫入所述傳輸緩存Buffer;C6、統(tǒng)計所述節(jié)點的子節(jié)點個數(shù),將子節(jié)點個數(shù)寫入所述傳輸緩存Buffer;C7、如果子節(jié)點個數(shù)大于0,依次對每個子節(jié)點進行所述編碼表的查詢和所述編碼的替換,并將替換后的壓縮數(shù)據(jù)寫入所述傳輸緩存Buffer;C8、將所述節(jié)點的數(shù)據(jù)長度的值寫入所述傳輸緩存Buffer;C9、將所述節(jié)點的數(shù)據(jù)寫入所述傳輸緩存Buffer。5、根據(jù)權(quán)利要求4所述的XMPP協(xié)議傳輸數(shù)據(jù)壓縮方法,其特征在于,所述步驟C5包括步驟Dl、在所述編碼表中查詢所述節(jié)點屬性的屬性名編碼,如果存在屬性名編碼,設(shè)置所述節(jié)點屬性的屬性名類型的值為0,否則設(shè)置所述節(jié)點屬性的屬性名類型的值為1,將屬性名類型的值寫入所述傳輸緩存Buffer;D2、如果屬性名類型的值為0,將屬性名編碼寫入所述傳輸緩存Buffer,否則如果屬性名類型的值為1,則先將屬性名長度的值寫入所述傳輸緩存Buffer,然后將屬性名字符串寫入所述傳輸緩存Buffer;D3、在所述編碼表中查詢所述節(jié)點屬性的屬性值編碼,如果存在屬性值編碼,設(shè)置所述節(jié)點屬性的屬性值類型的值為0,否則設(shè)置所述節(jié)點屬性的屬性值類型的值為1,將屬性值類型的值寫入所述傳輸緩存Buffer;D4、如果屬性值類型的值為0,將屬性值編碼寫入所述傳輸緩存Buffer,否則如果屬性值類型的值為1,則先將屬性值長度的值寫入所述傳輸緩存Buffer,然后將屬性值字符串寫入所述傳輸緩存Buffer。6、根據(jù)權(quán)利要求4所述的XMPP協(xié)議傳輸數(shù)據(jù)壓縮方法,其特征在于,所述步驟C7包括步驟執(zhí)行步驟C1至C9。7、一種XMPP協(xié)議傳輸數(shù)據(jù)解壓縮方法,其特征在于,包括步驟El、在接收所述壓縮即時通訊信息的端點設(shè)置所述編碼表;E2、查詢所述編碼表,將所述壓縮即時通訊信息中的所述編碼由相應(yīng)的XMPP協(xié)議字符串替換,形成所述即時通訊信息。8、根據(jù)權(quán)利要求7所述的XMPP協(xié)議傳輸數(shù)據(jù)解壓縮方法,其特征在于,所述步驟E2包括步驟Fl、設(shè)置接收緩存Buffer1;F2、將所述壓縮即時通訊信息中的協(xié)議頭數(shù)據(jù)原樣寫入所述接收緩存Bufferl;F3、依次對所述壓縮即時通訊信息中的每個節(jié)點進行所述編碼表的查詢和相應(yīng)的XMPP協(xié)議字符串的替換,并將替換后的XMPP協(xié)議字符串寫入所述接收緩存Bufferl;F4、將所述壓縮即時通訊信息的擴展數(shù)據(jù)長度字段的數(shù)值和擴展數(shù)據(jù)寫入所述接收緩存Bufferl。9、根據(jù)權(quán)利要求7所述的XMPP協(xié)議傳輸數(shù)據(jù)解壓縮方法,其特征在于,包括步驟E3:調(diào)用XMPP協(xié)議解析器對所述即時通訊信息進行解析。全文摘要本發(fā)明公開了一種XMPP協(xié)議傳輸數(shù)據(jù)壓縮方法,包括步驟A1.將XMPP協(xié)議使用的字符串分別進行編碼,所述編碼組成編碼表;A2.在傳輸XMPP協(xié)議即時通訊信息時,查詢所述編碼表,將所述即時通訊信息中的XMPP協(xié)議字符串由相應(yīng)的所述編碼替換,形成壓縮即時通訊信息;A3.傳輸所述壓縮即時通訊信息。文檔編號H04L12/58GK101557399SQ20091010736公開日2009年10月14日申請日期2009年5月20日優(yōu)先權(quán)日2009年5月20日發(fā)明者張代軍,朱懋柱申請人:深圳市匯??萍奸_發(fā)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1