国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

基于SMPP協(xié)議的GSM短消息增值業(yè)務(wù)接口設(shè)計(jì)與實(shí)現(xiàn)

2019-11-18 20:08:56
字體:
供稿:網(wǎng)友

     Design and Implementation of one of the GSM Short Message Value-Added Service Interface Based on PRotocol SMPP
鄒建新         黃本雄
華中科技大學(xué)電信系 (430074)
Jianxin Zou     Benxiong Huang
Telecommunication Department of Huazhong University of Science and Technology (430074)

摘要:本文首先介紹了GSM短消息點(diǎn)對點(diǎn)協(xié)議SMPP的定義、接口連接和消息處理機(jī)制;在分析GSM短消息增值業(yè)務(wù)接口的基礎(chǔ)上詳細(xì)論述了基于SMPP協(xié)議的一種GSM短消息增值業(yè)務(wù)接口通信服務(wù)程序的實(shí)現(xiàn)。
關(guān)鍵詞:  短信增值業(yè)務(wù);  SMPP協(xié)議;  通信服務(wù)接口; UNIX網(wǎng)絡(luò)編程
Abstract: This paper introduce the concept and structure of GSM Short Message Value-added Service and the Short Message point-to-point protocol SMPP. Then gives a method of Design and Implementation of the GSM Short Message Value-Added Service Interface Based on Protocol SMPP in details. Some important technology items are also shows.
KeyWords: Short Message Value-added Service; SMPP protocol; Communication Interface; UNIX network programming
1、 前言
短消息業(yè)務(wù)是GSM/DCS1800系統(tǒng)中唯一不需要建立端到端業(yè)務(wù)通道的業(yè)務(wù),它通過GSM系統(tǒng)的信令信道(SDCCH用戶正常時或SACCH用戶忙時)來傳送短消息,通過SMSC完成接收、存儲和轉(zhuǎn)發(fā)用戶的短消息,如何充分利用SMSC的有效資源開展方便靈活的增值業(yè)務(wù),實(shí)現(xiàn)信息的互連和共享,即為短消息業(yè)務(wù)提供更多的信息源。
目前SMSC均提供與外界的接口方式。最廣泛應(yīng)用的協(xié)議有SMPP(Short Message Peer to Peer)(含中國移動點(diǎn)對點(diǎn)協(xié)議CMPP)/CIMD (Computer Interface Message Distribution) 等。通過SMPP通信服務(wù)接口,可以向用戶提供許多應(yīng)用,為開展新業(yè)務(wù)提供了廣闊的前景。
2、 SMPP協(xié)議格式及消息交互定義
2.1 SMPP PDU定義
SMPP協(xié)議是一個開放的消息轉(zhuǎn)換協(xié)議;它定義了一系列操作的協(xié)議數(shù)據(jù)單元(PDUs)和當(dāng)SMPP運(yùn)行時ESMS應(yīng)用系統(tǒng)與SMSC之間交換的數(shù)據(jù)。從而完成SMSC與ESMEs(外部短消息實(shí)體)的信息交換。SMPP是基于SMSC與ESME之間的請求和響應(yīng)協(xié)議數(shù)據(jù)單元的交換,每一個SMPP操作都由一個請求PDU和相應(yīng)的一個響應(yīng)PDU組成并且這種交換是在TCP/ip或X.25網(wǎng)絡(luò)連接之上的。因此基于SMPP短消息增值業(yè)務(wù)接口利用Socket網(wǎng)絡(luò)編程實(shí)現(xiàn)。根據(jù)SMPP協(xié)議,每個PDU的結(jié)構(gòu)定義由PDU Header和PDU Body(有些PDU沒有)組成,見下表:
PDU Header(mandatory) PDU Body(optional)
整個PDU的長度 PDU的類型 PDU的狀態(tài) PDU的序列號 必要參數(shù) 可選參數(shù)
Command length Command
id Command status Sequence number Mandatory parameters Optional parameters
Unsigned long Unsigned long Unsigned long Unsigned long mixed TLV
其中協(xié)議定義了非常復(fù)雜的可選參數(shù),每個可選參數(shù)的結(jié)構(gòu)定義如下:
可選參數(shù)標(biāo)簽 參數(shù)值的字節(jié)長度 參數(shù)的取值
Tag Length Value
Unsigned int Unsigned int 變長
其定義是為擴(kuò)充應(yīng)用功能,但在常見的短消息增值業(yè)務(wù)應(yīng)用中,只需使用PDU的必選參數(shù)即可,但如要實(shí)現(xiàn),也只是在PDU定義結(jié)構(gòu)中添加可選項(xiàng),對系統(tǒng)的實(shí)現(xiàn)無影響。
2.2 短消息增值業(yè)務(wù)交互數(shù)據(jù)格式定義
短消息增值業(yè)務(wù)接口的作用是為建立ESME與SMSC及業(yè)務(wù)應(yīng)用源的連接。其結(jié)構(gòu)示意圖如下:

 

 

 

其功能(1)將來自SMSC的協(xié)議數(shù)據(jù)進(jìn)行SMPP解碼,得到的信息寫入數(shù)據(jù)庫或發(fā)給各業(yè)務(wù)服務(wù)中心;(2)將來自各業(yè)務(wù)服務(wù)中心的消息進(jìn)行SMPP編碼,通過通信模塊提供的連接發(fā)往SMSC,并將必要的信息寫入數(shù)據(jù)庫。其中SMSC與通信接口之間是通過SMPP協(xié)議PDUs交互的,而通信接口與各種業(yè)務(wù)源之間的消息交互還必須確定數(shù)據(jù)幀的含義,保證消息交互的 正確性,同時因許多信息在SMPP編碼、解碼時進(jìn)行了分解取舍,所以對于前端業(yè)務(wù)中心數(shù)據(jù)通信需要定義數(shù)據(jù)幀格式,如下表:
Frame Header (mandatory) Frame Body(optional)
整個幀長度 幀類型ID  幀狀態(tài) 幀序號 必要參數(shù)
Command length Command
id Command status Sequence number Mandatory parameters
4字節(jié) 2字節(jié)   2字節(jié) 4字節(jié) mixed
3、 通信接口服務(wù)系統(tǒng)的實(shí)現(xiàn)
3.1  系統(tǒng)完成功能需求
(1) 與SMSC連接和綁定
(2) 與各應(yīng)用業(yè)務(wù)中心的連接
(3) 接收SMSC短消息、解碼并進(jìn)行短消息應(yīng)答編碼
(4) 對接收短消息合法檢查、識別所屬應(yīng)用業(yè)務(wù)并組成相應(yīng)的內(nèi)部數(shù)據(jù)幀
(5) 發(fā)送內(nèi)部數(shù)據(jù)幀到所屬應(yīng)用業(yè)務(wù)中心
(6) 接收各應(yīng)用業(yè)務(wù)中心發(fā)送的內(nèi)部數(shù)據(jù)幀并應(yīng)答
(7) 對接受的數(shù)據(jù)幀解析并進(jìn)行SMPP編碼并發(fā)送至SMSC
(8) 對發(fā)送和接收的短消息計(jì)費(fèi)統(tǒng)計(jì)
3.2 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
   由上述系統(tǒng)的主要功能看出系統(tǒng)實(shí)際上是相對獨(dú)立兩個處理流程,一個是處理與SMSC的編碼、解碼和數(shù)據(jù)的收、發(fā);另一個是與前端應(yīng)用業(yè)務(wù)中心的數(shù)據(jù)幀編碼、解碼和數(shù)據(jù)收發(fā)。并且消息的到達(dá)具有隨機(jī)、快速和突發(fā)性,因此將系統(tǒng)設(shè)計(jì)為兩個主進(jìn)程。分別處理SMSC消息和應(yīng)用業(yè)務(wù)中心消息。兩個進(jìn)程之間采用消息隊(duì)列進(jìn)行消息通信,因?yàn)樵诙滔⒃鲋禈I(yè)務(wù)中所有消息都可以認(rèn)為是一條單獨(dú)的消息,沒有邏輯關(guān)系也不存在實(shí)時共享關(guān)系。為保證系統(tǒng)的安全與正確,對短消息的發(fā)送采用定時進(jìn)程控制;為適應(yīng)系統(tǒng)的可擴(kuò)充性,對數(shù)據(jù)庫的操作、訪問采用數(shù)據(jù)庫訪問進(jìn)程單獨(dú)進(jìn)行處理。系統(tǒng)結(jié)構(gòu)圖如下:

 

 

                                     


 

 

 
  
 
                                       
 

3.2.1 SMSC進(jìn)程處理功能流程
    首先與SMSC進(jìn)行SOCKET連接并偵聽TCP端口,對SMSC發(fā)綁定消息,接收SMSC發(fā)送的短消息進(jìn)行解碼并檢查其合法性,對合法正確分類的消息組成前臺業(yè)務(wù)應(yīng)用定義的內(nèi)部數(shù)據(jù)幀(格式前面已定義),將已組好的內(nèi)部數(shù)據(jù)幀發(fā)送到SMSC->SERV消息隊(duì)列;然后取SERV->SMSC消息隊(duì)列消息存包并啟動定時器,發(fā)送PDU到SMSC。其內(nèi)部結(jié)構(gòu)如下圖:

 

 

 

 

 

 

 


PACKET結(jié)構(gòu)數(shù)組的作用是存儲即將發(fā)送或已經(jīng)發(fā)送的PDU包,其定義如下:
typedef struct {
unsigned int seqnum;
int ordernum;
char data[MAX];
} pend_packet;
每個pend_packet結(jié)構(gòu)對應(yīng)一個PDU包,其中seqnum是與該P(yáng)DU包結(jié)構(gòu)中的HEADER中的sequence_number一致的;ordernum是該P(yáng)DU包存入PACKET數(shù)組的序列號,即全局變量ORDERNUM,在每次調(diào)用存包模塊時,ORDERNUM會自動遞增,則所存的PDU包的ordernum即為此ORDERNUM。但在接收到該P(yáng)DU包的回應(yīng)以后,則將該P(yáng)DU包在PACKET數(shù)組中的ordernum置為-1,表示將其清除。
因?yàn)槊總€SMSC對應(yīng)的socket有5個狀態(tài),在調(diào)用發(fā)包模塊時,只有當(dāng)對應(yīng)socket的狀態(tài)為DATA_STATUS時,才能直接將PDU包發(fā)送至對應(yīng)SMSC,否則要調(diào)用綁定模塊對該SMSC重新進(jìn)行綁定。在這兩種情況下,都要將PDU包存入PACKET數(shù)組。在接收到綁定數(shù)據(jù)包的響應(yīng)包后,則將綁定數(shù)據(jù)包在PACKET數(shù)組中的狀態(tài)置為-1,將該socket在socket_smsc表中狀態(tài)置為DATA_STATUS,同時將PACKET數(shù)組中屬于該socket的PDU包發(fā)至SERV->SMSC消息隊(duì)列,SERV->SMSC消息隊(duì)列處理模塊會調(diào)用發(fā)包模塊將這些包發(fā)送至相應(yīng)SMSC。在收到數(shù)據(jù)包的響應(yīng)包后,則將該數(shù)據(jù)包在PACKET數(shù)組中的狀態(tài)置為-1。
3.2.2  SERV進(jìn)程處理功能流程
    SERV進(jìn)程則相對較簡單,完成對SERV的數(shù)據(jù)接收、編碼并發(fā)送到SERV->SMSC消息隊(duì)列;取SMSC->SERV消息隊(duì)列中消息發(fā)送到前臺業(yè)務(wù)服務(wù)中心。實(shí)現(xiàn)結(jié)構(gòu)圖略。
3.2.3  定時器進(jìn)程及數(shù)據(jù)庫的訪問
在通信軟件系統(tǒng)中,需要利用定時器來管理任務(wù)的調(diào)度和通信、通信協(xié)議的超時(提供差錯控制的機(jī)制)和系統(tǒng)數(shù)據(jù)的定時更新等多種事務(wù)。在那些對時鐘數(shù)量和種類要求不多,精度要求不高的應(yīng)用場合,可以直接使用操作系統(tǒng)提供的時鐘功能。然而,實(shí)際的通信軟件要求時鐘種類多,并發(fā)的時鐘數(shù)量龐大。有的對精度要求極為嚴(yán)格,在這種情況下可以考慮采用實(shí)時操作系統(tǒng)。linux中Spec1170提供了三種間隔計(jì)時器,其中一種是ITIMER_REAL 類型,它的機(jī)制是:當(dāng)該類型的間隔計(jì)時器到期時,系統(tǒng)內(nèi)核會發(fā)出SIGALARM信號,可以通過捕獲這一信號來感知間隔計(jì)時器的到期。根據(jù)這一原理,設(shè)計(jì)了基于Linux操作系統(tǒng)的spec1170軟件間隔計(jì)時器的多任務(wù)定時服務(wù)器,來對實(shí)時通信系統(tǒng)提供支持。
通信接口系統(tǒng)對Oracle 8i數(shù)據(jù)庫的訪問采用單獨(dú)進(jìn)程實(shí)現(xiàn),Oracle提供Proc預(yù)編譯器,Proc可將.pc文件預(yù)編譯成.c文件,然后在Linux/UNIX中用cc或gcc鏈接oracle數(shù)據(jù)庫下的頭文件和庫文件,編譯鏈接成可執(zhí)行文件。
4、 結(jié)束語
設(shè)計(jì)的短消息增值接口通信系統(tǒng)采用結(jié)構(gòu)化模塊向客戶提供服務(wù)。在性能上采用開辟多個線程和合理協(xié)調(diào)多個進(jìn)程間的優(yōu)先級及進(jìn)程內(nèi)部各任務(wù)優(yōu)先級,并為降低系統(tǒng)空閑時對CPU的占有率,將系統(tǒng)的非阻塞方式改為阻塞(消息觸發(fā))方式。系統(tǒng)在SUN Solaris系統(tǒng)下運(yùn)行,我們將其用在GPS車輛定位軟件系統(tǒng)中,實(shí)踐證明,它達(dá)到了預(yù)期設(shè)計(jì)目標(biāo),能夠滿足系統(tǒng)通信應(yīng)用的要求。
參考文獻(xiàn)
[1]Key A.Robbins ,Steven Robbins,pratical unix programming,1999,8。
[2]SMPP Developers Forum; Short Message Peer to Peer Protocol Specification v3.4;Document Version 1.2 ;1999.10
[3]鄒建新;GSM短消息接口協(xié)議SMPP的研究。武漢科技學(xué)院學(xué)報;2000.12(4):12~17
      作者聯(lián)系方式:    電話:027-87410171    電子郵件:frankzou_cn@263.net


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 雅安市| 额尔古纳市| 大埔县| 浮山县| 若羌县| 邻水| 无棣县| 浦江县| 牟定县| 玛曲县| 永和县| 崇信县| 仪陇县| 龙口市| 柏乡县| 德庆县| 福海县| 民县| 吉木萨尔县| 新乡县| 丹东市| 沾化县| 虞城县| 乐陵市| 康乐县| 花莲县| 瑞安市| 铜陵市| 抚松县| 都昌县| 北票市| 绥阳县| 渭源县| 永吉县| 绥德县| 大名县| 交口县| 噶尔县| 江城| 云阳县| 九寨沟县|