基于CMPP協議的短消息平臺的設計與實現.doc_第1頁
基于CMPP協議的短消息平臺的設計與實現.doc_第2頁
基于CMPP協議的短消息平臺的設計與實現.doc_第3頁
基于CMPP協議的短消息平臺的設計與實現.doc_第4頁
基于CMPP協議的短消息平臺的設計與實現.doc_第5頁
已閱讀5頁,還剩23頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

基于CMPP協議的短消息平臺的設計與實現 姓名: 專業: 電子信息技術指導老師: 摘要 當前,全國各地的手機用戶(中國移動用戶、聯通用戶)可以通過手機短消息服務中心(SMC)非常自由地發送和接收短消息。SMC較好地解決了移動網絡內部的信息交換,但其本身不能很好的解決Internet與移動網絡的信息交換,同時從安全性角度也不宜將SMC直接接入Internet。所以本論文講的是:(1)論文首先闡述了短消息系統的體系結構、原理,增值業務的應用,并深入分析了短消息網關的工作原理,流程,CMP協議;(2)針對當前每個中國移動為減輕短消息、網關負荷,對SP短消息應用提供有限的連接數量,提出對接入服務較多的SP搭建一個統一短消息、接入平臺(短消息服務器),在短消息平臺網關通訊模塊設計中,采用連接池技術,多個短消息應用動態復用一個網關連接。 關鍵詞:CMPP; 短消息; 增值業務; 消息隊列; 回調機制 目錄1 緒論.11.1短消息增值業務發展背景.11.2短消息網絡概述.11.3短消息中心.22 短消息網關接口協議.42.1短消息網關接口協議概述.42.2 CMPPC協議體系結構.42.3 CMPP協議交互過程中的應答方式.73 短消息平臺接口的設計與實現.123.1短消息接口程序結構.123.2短消息平臺接口類的實現.14結束語.16致謝.17參考文獻.18緒論1.1短消息增值業務發展背景 隨著信息技術和通信技術的日益發展、通信工具的不斷普及,各種通信工具日益增多,人們為了相互保持聯系,每天都不得不面對手機、BP機、電話機、傳真機等多種通信設備,還要定時檢查電子郵件和語音信息以及傳真信箱等,通信方式越來越多樣化,帶來各種便利的同時,由于它們彼此是獨立的,需要不同的網絡支持、多個終端以及多個號碼,在發送和獲取不同類型的消息時不方便,也帶來了昂貴的費用。 短消息業務包括基本業務和增值業務。基本業務也就是一些傳統的短消息業務,比如移動臺發起移動臺終止的短消息、業務;與語音信箱配合完成語音信箱通知業務:可支持漢字的短消息、業務,人工接續和自動接續的短消息業務。所謂短消息增值業務,是指基于移動增值業務平臺,通過網絡向用戶提供信息類,娛樂類,交易類等業務。包括:話費查詢、話費通知、股票行情查詢、股票實時漲跌告警、超級尋呼、公共信息、電子郵件、鈴聲下載、圖像下載、以及利用到短消息網絡的即時通訊工具(如騰訊QQ、網易泡泡、搜Q等),聯合SP(Server Povider服務提供商)提供的業務等。隨著短消息業務的發展,增值業務的種類范圍將會根據需要不斷擴充。 1.2短消息網絡概述 短消息是通過移動網絡傳輸的有限長度的文本信息。短消息的根本用途是實現移動用戶之間的信息傳遞,也可以通過短消息、中心查詢或預定信息。短消息業務占用GSM控制信道,而不是業務信道,因此與話音業務、數據業務互不干擾。GSM短消息業務分為兩種:點對點短消息業務和短消息小區廣播業務。點對點短消息業務能夠使GSM字移動通信網的用戶可以發出或接收長度有限(不超過140個字節)的數字或文字消息.并且短消息的收發不影響通話;短消息業務可以使網絡端知道被叫方是否已經收到短消息,如果傳送失敗,被叫方沒有回答確切消息,網絡一側會保留所傳的消息、,一旦網絡發現被叫方能被叫通時,消息能被重發以確保被叫方能收到。通過短消息、中心及其相關增值業務系統還可以實現諸如股票交易、銀行業務、信息點播、GPS監控、Email通知等信息服務,及日程安排、預約留言、電話號碼薄等移動秘書服務 圖11 短消息網絡結構SME: Short Messaging Entity,短消息實體。它可以接收或改善短消息,位于固話系統、移動基站或其他服務中心內: SMSC: Short Message Service Center,短消息服務中心,負責在基站和SME間中繼、儲存或轉發短消息;移動臺(ME)到SMSC的協議能傳輸來自移動臺或朝向移動臺的短消息,協議名為SMTP (Short Message Transmission Protocol);SMCGWMS或SMCGMSC: SMS-Gateway MSC, SMS網關。接收由SMSC發送的短消息,向HLR查詢路由信息,并將短消息傳送給接收者所在基站的交換中心;HLR: Home Location Register,歸屬位置寄存器。用于久儲存管理用戶和服務記錄的數據庫,由SNSC產生。SMC網關與H LR之間的協議使前者可以要求HLR搜索可找到的用戶地址。它與MSC與HLR之間的協議一起,能在移動臺因為超出覆蓋區而丟失報文、隨后又可找到時加以提示。BSS: Base Station System,移動基站系統。負責與手機進行無線通訊。短消息是GSM中唯一不要求建立端到端業務路徑的業務,即使移動臺己處于完全電路通信情況下仍可進行短消息傳輸。 短消息通信僅限于一個消息,換言之,一個消息的傳輸就構成了一次通信。因此,業務是非對稱的,一般認為移動起始短消息(MO)傳輸與移動終接短報文(M T)傳輸是兩回事。這并不阻礙實時對話,但系統認為不同的消息彼此獨立,消息的傳輸總是由處于GSM外部的短消息服務中心(SMSC)進行中繼,消息有目的地或起源地,但只與用戶和S MSC有關,而與其他GSM基礎設施無關。移動起始短消息(MO):一個GSM用戶發送短消息時,他必須在其內容中包含最終地址的識別符,和處理這消息的服務中心號碼,然后請求傳遞。短消息的傳輸要求在移動臺和MSC之間建立信令連接。消息、本身的傳遞要求在無線路徑上建立專用的鏈路層鏈接,并要求采用專用的消息傳遞協議。在規定的協議棧的頂部是所謂的傳輸層協議,在移動起始短消息情形下,它是一條單獨的報文,即S MTP(不是TCP/IP的S1TP)短消息傳送報文,低處理應答的傳送,它只指出SMSC己收到報文。短消息業務的功能是向移動用戶提供短消息發送/接收業務。短消息業務作為GSM第一階段標準被創建。短消息由字符和數字組成,每個短消息長度最多為160個拉丁字符,如果是中文或其他非拉丁字符則長度最多為70個。短消息業務中心(SMSC)實現短消息業務,它需要直接與移動業務交換中心(MSC)相連,因此短消息業務中心必須實現No.7信令的消息傳遞部分,才能同MSC通信。同時,短消息業務中心還要實現信令連接控制部分、事務處理能力部分,以及移動應用部分中的短消息、業務管理業務,這樣才能實現高層的短消息發送/接受功能。1.3短消息中心短消息中心本身是運行在服務器上的一個應用程序,其實質是一個數據庫應用程序。短消息中心核心進程擔負著通過7號信令與移動交換機連接并且改善接收短消息底層編碼的任務。它收到一條短消息后將其放入數據庫中,同時另一個進程試圖將這條短消息放入發送隊列將其發送出去。如果成功,這條短消息將被刪除以釋放數據庫空間,但統計信息將保存如果不成功,則根據設置的時間間隔重發,一直到發送成功或有效期過為止;如果發現手機關機則等待其開機時發送。接口層使得ESME可以通過一定的方式使用SMSC,通常的做法是建立一個多連接Socket服務端,在某一個端口上守候,通過一定的協議和客戶端進行交互,實現功能。接口層協議的事實標準是短消息點對點協議(SMPP),多數廠商(包括中興、華為、WINS .Ferma Intech等)均支持該協議。 圖12短消息服務中心2 短消息網關接口協議2.1短消息網關接口協議概述短消息服務中心為了提供短消息接入服務,在國內需要具備中國移動短消息點對點協議(CMPP)接口仁以及中國聯通短消息網關系統接口協議(SGIP)接口,實現網關功能,其(移動網關)主要功能完成了將SMPP協議到CMPP協議的轉換,能夠將從外部短消息實體(ESME)或服務提供商(SP)接收到MT (MobileTerminate)消息根據其內容,選擇相關路由發送到正確的短消息、網關,最后到短消息服務中心發至移動基站,并且能將收到的M0 (Mobile Originate)消息路由到正確網關后最終發到服務提供商(SP)。可以看出短消息網關(互聯網短消息網關)是移動短消息業務接入因特網的入口點。如果提供國際短消息接入服務,則必須同時實現短消息、點對點協議(SMPP)接口。術語解釋SMPP Short Message Peer to Peer短消息點對點協議CMPP China Mobile Peer to Peer中國移動點對點協議SGIP Short Message Gateway Interface Protocol短消息、網關接口協議 (用于中國聯通)SMSC Short Message Service Center短消息服務中心GNS Gateway Name Server負責系統路由的管理和同步 (又稱匯接網關)M0 由手機用戶提交的短消息(Mohile Originate)MT 由手機用戶接收的短消息(Mohile Terminate)SMG Short Message Gatewas聯通公司的短消息網關 SMG之間的通訊協議采用SGIPISMG Internet Short Message Gateway互連網短消息網關(移動)Data Service Manage Platform數據業務管理平臺SP Service Provider服務提供商2.2 CMPP協議體系結構為防止一些個人或企業進行短消息的惡意傳輸,在國內現在外部應用實體不能直接與短消息中心互聯,而必須通過中國移動或中國聯通的短消息網關來發送或接收短消息,由后者將短消息、發送至短消息中心。外部應用實體與中國移動短消息網關之間通過CMPP接口,而同樣聯通也有其網關和協議接口SGIP,CMPP和SGIP分別是移動和聯通在 S MPP協議上改進的針對自己網關的接口協議。如圖2-1所示,中國移動互聯網短信網關(ISMG)是業務提供商(SP)與移動網內短信中之間的中介實體,互聯網短信網關一方面負責接收SP發送給移動用戶的信息和提交給短信中心。另一方面,移動用戶點播SP業務的信息將由短信中心通過互聯網短信網關發給SP。另外,為了減輕短信中心的信令負荷,互聯網短信網關還應根據路由原則將SP提交的信息轉發到相應的互聯網短信網關。互聯網短信網關通過向匯接網關(GNS)查詢的方式獲得網關間的轉發路由信息。 圖21互聯網短消息網關組網結構另外,ISMG還必須與數據業務管理平臺DSMP進行連接,在業務流程中對用戶、業務以及定購關系等進行鑒權并對業務進行批價。2. 2. 1幾種通信路由和本地短消息網關(ISMG)之間相連的SMSC稱作本地SMSC,和異地ISMG相連的SMSC稱作異地SMSC。和ISMG之I司相連的SP稱作本地SP,和異地ISMG相連的SP稱作異地SP。從本地SMSC向本地SP以及從本地SP向本地SMSC發送的消息直接由IS M G轉發;從本地SMSC向異地SP以及從本地SP向異地S MSC發送的消息由本地IS MG路由到異地IS MG后,再由異地IS MG轉發。消息從本地SMSC到本地SPISHG從SMSC接收到短消息,直接發給SP。例如:SMSCIA-ISMGI一SPIYShSCIB-ISMGI一SPIX消息從本地SMSC到異地SPISMG從本地SMSC接收短消息、,再路由到異地ISMG,由異地的ISMG發送到目的SP,例如:SMSCIA-ISMGI一GNS- ISMG2-SP2YSMSCIB-ISMG1一GNS- ISMG3- SP3X上面兩種主要是手機端發起短消息的過程,其示意圖如下: 圖 2-2 發起短消息1)手機發出數據請求(可能是訂閱信息或圖片點播等)到SMSC,被源工SMG接收;2)源工ISMG對接收到的信息返回響應;3)源工ISMG在本地查詢不到要連接的SP,向GNS(匯接網關)發路由請求信息:4) GNS將路由信息返回;5)源工ISNG根據路由信息將請求前轉給目的工ISMG;6)目的工ISMG對接收到的信息返回響應:7)目的ISMG將請求信息送SP;8) SP返回響應;對于消息從本地SMSC到本地SP的情況沒有步驟3, 4, 5, 6。在以上操作中,步驟3到步驟8均使用CMPP協議;在隨后的操作中,目的ISMG在接收到SP的響應后將產生MO狀態報告發給源工ISMG.消息從本地SP到本地SMSCISMG從SP接收短消息,直接發給SMSC。例如:SPIX-ISMGI一SMSCIASPIY-ISMG1一SMSCIB.消息從本地SP到異地SMSCISMG從本地SP接收短消息,再路由到異地的ISMG發送到目的SMSC,例如:SPIX-ISMGI一GNS- ISMG2-SMSC2ASPIY-ISMGI一GNS- ISMG3-SMSC3B以上兩種主要是手機端接收短消息的過程,其示意圖如下: 圖2-3 接收短消息1) SP發出數據請求(可能是短信通知或手機鈴聲等)到源ISMG;2)源ISMG對接收到的信息返回響應;3)源ISMG在本地數據庫中找不到要目的手機號段所對應網關代碼,向GNS(匯接網關)發路由請求信息;4)匯接網關將路由信息返回;5)源ISMG根據路由信息將請求前轉給目的ISMG;6)日的ISAG對按收到的信息返回響應;7)目的ISMG將請求信息發送至SMC;8) SMC向目的ISMG返回響應:在上述操作中,步驟1到步驟6均使用CMPP協議;對于消息從本地SP到本地SMSC的情況沒有步驟3, 4, 5, 6。在隨后的操作中,SMC將通過N0. 7信令網向移動用戶發送信息,移動用戶收到后將返回狀態報告(Delivery-Receipt)給短信中心,短信中心將按照M0操作的流程將狀態報告返回給SP(如果SP要求返回狀態報告)。2.3 CMPP協議交互過程中的應答方式 在SP與ISMG之間、SMSC與ISMG之間及ISMG之間的交互過程中均采用異步方式,即任一個CMPP協議中的網元在收到請求消息、后應立即回送響應消息。如圖2-4所示: 圖2-4 CMPP交互過程中的應答方式24 CMPP協議通信消息的定義 CMPP對外提供長連接端口號為7890,短連接端口號定義為7900。字節采用在網絡中通用的網絡字節序。基于CMPP協議的消息類型主要有3類: 1.SP與短消息網關(ISMG)通信的消息; 2.短消息網關(ISMG)之間的消息; 3.短消息網關(ISMG)與匯接網關(GNS)之間的消息。 其中本論文中的短消息平臺是SP短消息應用系統接入短消息網關的統一平臺把涉及到的,主要是第1種,在下面對這些消息做一些介紹。與SMPP協議一樣,CMPP也是一個應用層協議,基于TCP/IP和X.25網絡連接,由下層的網絡層負責管理CMPP消息的傳輸和接收,網絡層的發送實體為了處理CMPP消息的分段并組成數據包,網絡層上的接收實體重組CMPP消息。因此,CMPP協議也是通過其下層的網絡層組織、發送、接收、重組一系列CMPP消息組成的數據包來實現的。每個CMPP消息包括消息頭MessageHeader與消息體Message Body兩部分。所有消息都包含MessageHeader,它包括Total_Length(消息總長度)、Command_ Id(表明命令類型的命令編碼)、Sequence_Id(消息序列號)四個參數,不同消息的lessageBody包含的參數各不相同。CMPP消息的一般格式見下表2-5: 圖 2-5 CMPP消息的一般格式 MessageHeaderMessageBody 4字節 4字節4字節 不定長 Total_LenghtCommand_ID Sequence_IDParameter(optional)Unsigned longUnsigned longUnsigned long已定義的CMPP消息類型共有30個,除上面己給出的ISMG與SP以及ISMG之間傳送的消息類型外,還包括其他工SAG與網關匯接點之間有關路由信息請求的消息類型。后面章節將給出一些消,、的格式,以及其具體實現。 具體到一個短消息網關中,由短消息、網關CMPP代理系統與SP建立了網絡連接基礎上,組織、發送、接收、重組由一系列CMPP消息組成的數據包,從而實現與SP之間的短信息交換。短消息接入平臺與移動短消息、網關(ISMG)之間互為客戶/服務器關系,但要求短消息、接入平臺首先以客戶的身份請求連接到移動網關,并且以IP進行驗證,若驗證成功,之后短消息平臺與移動網關之間方可進行數據傳輸。短消息接入平臺連接到短消息網關后應保持連接(長連接)。短消息接入平臺發送CMPP_ CONNECT消息,向移動短消息網關請求連接,短消息網關以CMPP_ CONNECT_ RESP消息響應請求。消息體部分根據命令的不同而不同,下面討論幾個主要命令的消息體格式:.SP請求連接到ISMG (CMPP_ COVNECT)操作:傳輸CMPP_ CONNECT操作的目的是SP向ISMG注冊作為一個合法SP身份,并以MD5算法加密鑒權號碼,若注冊成功后即建立了應用層的連接,此后SP可以通過此工SMG接收和發送短信。 表2-6 CMPP_CONNECT消息格式字段名字節數屬性描述Souree_Addr6Octet String源地址,此處為SP_ID,即SP的企業代碼AuthenticatorSource16Octet String用于鑒別源地址,其值通過單向MD5hash計算得出Version1Unsigned Integer雙方協商的版本號,對于3.0的版本,高4bit3,低4位為0Timestamp4Octet String時間戳的明文,由客戶端產生,格式為MMDDHHMMSS,即月時分秒。.ISMG返回給SP的應答(CMPP_ CONNECT_ RESP)操作 該操作是在ISMG收到SP的連接請求后返回的應答消息, ISMG以CMPP_CONNECT_ESP消息響應SP的請求,消息體格式如下: 表2-7 CMPP_CONNECT_RESP消息格式字段名 字節數 屬性 描述Status4Unsigned Integer狀態0:正確 其他錯誤AuthenticatorISMG16Octet StringISMG認證碼,用于鑒別ISMG。其值通過單項MD5hash計算出Version1Unsigned Inetger服務器支持的最高版本號,對于3.0的版本,高4bit為3,低4位為0.SP向ISMG提交短信(CMPP_ SUBMIT)操作:CMPP SUBMIT操作的目的是SP在與ISMG建立應用層連接后向ISMG提交短信,ISMG以CMPP_ SUBMIT_ RESP消息響應。 CMPP_ SUBMIT操作的消息體格式:其主要字段有:信息標識、消息格式、發送時間、源號碼、目的號碼、消息長度、消息內容等。ISUG對SP發出的提交短消息請求返回的應答的操作: 表2-8 CMPP_SUBMIT消息格式字段名字節數屬性描述Msg_Id8Unsigned Integer信息標識Pk_total1Unsigned Integer相同Msg_Id的信息總條數,從1開始Pk_number1Unsigned Integer相同Msg_Id的信息序號,從1開始Rwgistered_Delivery1Unsigned Integer是否要求返回狀態確認報告:0:不需要1:需要2:產生SMC話單提交請求返回的應答CMPP_ SUBMI _ RESP消息體格式如下:其主要字段有:信息標識、結果(result ).ISMG向SP送交短信(CMPP_ DELIVER)操作CMPP_DELIVER操作的目的是工SMG把從短信中心或其它工SMG轉發來的短信送交SP,該操作的消息體格式如表3-3. 當工SMG向SP送交狀態報告時,信息內容字段(Msg_Content)字段的內容 分別表示信息標識(Msg_Id)、短信狀態結果(Stat )、發送時間(Submit_ time), Done_ time, Dest_ terminal_ Id(目的終端MSISDN號碼)、 SMSC_sequence(取自SMSC發送狀態報告的消息體中的消息標識)。SP向ISMG查詢發送短信狀態(CMPP_QUERY)操作:CMPP_QUERY操作的目的是SP向ISMG查詢某時間的業務統計情況,可以按總數或按業務代碼查詢。CMPP_ QUERY操作的消息體格式如下: 表2-9 CMPP_QUERY消息格式字段名字節數屬性描述Time8Octet String時間YYYYMMDD(精確至日)Query_Cde10Octer String查詢碼。當Query_Type為0時此項無效當Query_Type為1時,此項填寫業務類型Service_IDQery_Code1Unsigned_Interger查詢類別:0:總數查詢:1:按業務類型查詢Reserve8Octer String保留對于CMPP_ QUERY應答包CHPP_ QUERY_ RESP返回從SP接收信息總數、從SP接收用戶總數、成功轉發數量、待轉發數量、向SP成功送達數量等字段。.SP或ISNG請求拆除連接(CMPP_ TERIIVATE)操作與應答操作CMPP_TERMINATE操作的目的是SP或ISMG基于某些原因決定拆除當前的應用層連接而發起的操作。此操作完成后SP與ISMG之間的應用層連接被釋放, 此后SP若再要與ISMG通信時應發起CMPP_ C0NNECT操作。ISMG或SP以CMPP_TERMIHATE _RESP消息響應請求,這兩個消息都沒有消息體.SP向ISMG發起刪除短信(CMPP_CANCEL)操作CMPP_ CANCEL操作的目的是SP通過此操作可以將已經提交給ISMG的短信刪除,ISMG將以CMPP_ CANCEL_ RESP回應刪除操作的結果。CMPP_ CANCEL操作的消息體包含一個消息標識號字段,用來指定要刪除的消息;CMPP_CANCEL_ RESP操作的消息體包含無符號整型的表明刪除是否成功的標識號,0表示成功,1表示操作失敗。鏈路檢測(CMPP_ ACTIVE_ TEST)操作本操作僅適用于通信雙方采用長連接通信方式時用于保持連接,沒有消息體部分,其應答CMPP_ACTIVE_TEST_RESP僅包含一個字節的保留字段。3 短消息平臺接口的設計與實現短消息、統一平臺是不同短消息、應用系統接入中心,負責對短消息應用系統的接入的配置、管理、計費、轉發短消息,而短消息平臺接口部分主要負責與短消息平臺服務器的通信,是提供給短消息應用系統的二次開發接口。當我們升級短消息平臺時應該保持接口的不變性,這樣應用系統就可以不需要修改。 短消息、應用系統接入方式主要基于短消息、平臺提供給業務開發程序動態連接庫(API),或COM, java Bean (Java服務器)。 WEB服務器接入方式主要是基于組件的方式(COM,java Bean)。面闡述以DLL方式提供API接口的實現。3. 1短消息平臺接口程序結構 接口程序的實現主要也涉及到socket編程、CMPP中所規定的數據包(PDU的生成和解析以及請求/應答機制的實現等。接口程序主要由一個CMPP類構成,在該類中實現同短消息服務器的通信細節,封裝成DLL形式提供給短消息應用系統。在短消息平臺接口程序按功能可分為三層:Socket_ API層、CMPPPDU層和API層。接口程序的結構如圖3-1所示: 圖3-1 接口程序結構311 Socket API層最底層是Socket_ API層,主要功能是建立TCP連接、完成數據包的發送和接收。Socket_ API層與上層協議無關,只是完成具體的網絡通信。 短消息應用系統通常是通過專線或者Internet接入SMSC和ISMG的,而在這應用系統接入短消息平臺是通過局域網(SP或企業自己的短消息業務)或者以寬帶Internet接入(主要是二級SP),一般情況下是可靠的,但不能排除故障的可能性。為了減少故障帶來的影響,要求接口程序能夠及時發現故障并具有較完善的錯誤處理機制。為此,接口程序同短消息服務器之間的通信需要附加。為了附加TIMEOUT并具有較好的可移植性,Socket層中對于數據的發送和接收采用了Nonblocking的I/0方式,調用send和recv前通過調用select函數判斷操作是否能在指定的時間內完成,防止send和recv進入長時間的等待。Socket層中為每個socket分配有發送緩沖區和接收緩沖區。上一層將要發送的數據包寫入發送緩沖區中的空閑區域,每一次調用send時都試圖將發送緩沖區中所有未發送的數據發送出去。對于數據的接收,調用recv時將接收到的數據寫入接收緩沖區,由上一層從接收緩沖區中取出已經接收到的完整的數據包。 通過構造CMPP類我們封裝了Socket的數據發送和接收操作,在3.1. 2節具體的實現。3. 1 .2 CMPP PDU層接口程序中間層是CMPP_PDU層,一方面負責完成CMPP協議中的數據包(PDU )的生成和解析。另一方面負責完成CMPP的請求/應答機制。 每一種需要發送的CMPP數據包都對應一個打包函數,接收線程接收數據時首先判斷包格式是否正確,正確再調用接收回調函數從接收緩沖區中取出數據包。生成函數按照CMPP協議中規定的格式填寫各種參數,在發送緩沖區中直接生成數據包。 與其他一些常見的請求/應答式協議不同,CMPP中通信的雙方互為客戶端和服務器端,都可以發送請求數據包,另一方應答請求。此外,請求和應答可以是異步的:發送方在接收到下一次請求的應答之前可以連續發送多個請求,接收方依次處理后返回應答。為了使一對請求和應答相對應,數據包的包頭中有序列號字段,一對請求和應答的序列號是相同的,對于網關的Deliver包,接口程序內部自動回復相應RESP類型包。 請求和應答通過數據包的發送和接收兩部分來實現的。為了防止進入死等待,我們采用發送、接收分兩個線程,同時與短消息服務器一樣,采用滑動窗口,發送窗口,同時在接收到消J息應答前,最多只能發送16條數據對于每一個需要執行的CMPP操作,都有一個相應的操作函數。該函數首先生成并發送請求數據包,之后調用接收函數接收應答數據包。接收函數在接收到正確的應答數據包之前有可能會接收到其它數據包:ISMG向應用系統發出的請求數據包、前一次請求的應答數據包等。因此,接收線程還包含了對ISMG發出的請求數據包的處理等其它操作,直到收到已發送請求對應的應答數據包后,才將對應的數據包從滑動窗口數組中刪除。3. 2短消息平臺接口類的實現對于服務器端就是連接短消息網關后,等待短消息網關的數據包,同時在給定端口監聽,等待各個業務應用實體的接入(通過接口程序),服務器負責對數據按CMPP協議轉發到短消息網關。同時管理配置模塊負責對整個平臺監控、管理、計費、查詢。短消息平臺接口是各種短消息應用系統接入短消息網關的通信橋梁。3.2.1接口類的成員函數CMPP:Start函數用來啟動與短消息平臺連接,并初始化網絡連接,填寫基本參數信息、包括短消息服務器IP地址、端口,以及服務接入號、密碼。另外我們定義一個函數指針:typedef void (*PFOnMsg) (CMPP_PACKAGE *M_Packet);在Start函數中有一個此類型函數指針參數,這是提供給應用系統的回調函數,此函數由應用實體定義,當應用實體收到數據即自動調用此函數。CMPP: :Start函數實現如下: 下圖3-2給出接口程序啟動過程的流程: 圖3-2接口程序啟動過程的流程為了控制各個短消息應用系統到短消息平臺的流量,防止意外(網關或短消息服務器回送應答消息延遲等)時,各短消息應用無限制的發送消息到短消息平臺,采用類似控制短消息平臺發往網關的流量方法(網關通信代理模塊中),控制每一條短消息應用同短消息、平臺的連接上在收到應答消息前也最多發送16條消息。 在CMPP類中我們定義一個滑動窗口數組:CMPP_ PACKAGE Data Window NCMPP_ WINDOW_ SIZE;其中NCMPP_ WINDOW_SIZE即為窗口大小:它是一個全局變量臨界資源需在多線程中訪問需同步,在初始化函數Start中將所有窗口數據清0,表示未使用窗口;從前面我們可以看出CMPP_ PACKAGE是一個包含消息頭,消息體以及重發次數的結構,以及發送時間.3.2.3回調函數機制我們知道在面向對象的軟件設計過程中,對象是數據和方法的封裝體。在C+中,它們分別表現為數據成員和成員函數。程序設計者通過執行對象的各種方法,來改變對象的狀態(即改變對象的屬性數據)。從而使該對象發生某些“事件”。當一對象發生某事件時,它通常需向其它相關對象發送“消息”,請求它們作出一些處理。這時,發生事件并向其它對象請求處理的對象被稱為“事件對象”,而處理事件的對象被稱為“回調對象”。回調對象對事件的處理稱為“回調函數。在C+中,這一過程相當于:當事件對象發生事件時,調用回調對象的某些成員函數。在這里我們對于應用實體調用接口程序最重要的“事件”就是數據到達的事件了,而“事件對象”和“回調對象”則是CMPP類的實例了,回調函數是一個應

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論