短信網關協議(cmpp、sgip、smgp、smpp)長短信開發要點

短信網關協議長短信開發要點

本文本簡單介紹cmpp(移動)、sgip(聯通)、smgp(電信行業網關)、smpp等種短信協議如何發送長短信。
長短信是指短信內容超過70個字(漢字)的短信,拆分成67個字(漢字)然後提交到短信網關。

cmpp,sgip,smgp如何發送長短信

1,三種協議都需要在短信的內容頭部增加6個字節的內容,格式如下:
msgHeader[0]=5;
msgHeader[1]=0;
msgHeader[2]=3;
msgHeader[3]=tp_udhiHead;//從0開始,依次增加,最大256,同一條長短信該值相同
msgHeader[4]=Pk_total;//按67字拆分後總條數
msgHeader[5]=j;//第幾條,從1開始

2,針對cmpp和sgip,把TP_pid設置爲0,TP_udhi設置爲1即可。

3,針對smgp,TP_udhi設置爲1,TP_pid設置爲0,但需要把這兩個值以TLV的格式增加到短信內容後面。
TLV格式:T表示類型,長度2字節;L表示內容的長度,長度2字節;V表示內容,長度由L決定。
設置TP_pid時,T值爲1,L值爲1,V值爲0
設置TP_udhi時,T值爲2,L值爲1,V值爲1

//示例代碼,其中ptr指向消息buffer
short tpPidTag = htons(0x0001);
memcpy(ptr,&(tpPidTag),2);
ptr +=2;
short tpPidTagLen = htons(1);
memcpy(ptr,&(tpPidTagLen),2);
ptr +=2;
unsigned char tpPidTagVal = 0;
memcpy(ptr,&(tpPidTagVal),1);
ptr +=1;
short tpUdhiTag = htons(0x0002);
memcpy(ptr,&(tpUdhiTag),2);
ptr +=2;
short tpUdhiTagLen = htons(1);
memcpy(ptr,&(tpUdhiTagLen),2);
ptr +=2;
unsigned char tpUdhiTagVal = 1;
memcpy(ptr,&(tpUdhiTagVal),1);
ptr +=1;

smpp如何發送長短信

smpp發送長短信時,需要把Esm_Class=40h;然後短信內容的頭部加上長短信頭,長短信頭格式與cmpp的相同。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章