國內服務提供商(SP)與短信網關接入有兩種方式
一種是聯通的,使用SGIP協議
另一種是移動的,使用CMPP協議
SGIP和CMPP都定義了MO和MT方法,SP可以發送到短信網關 同時消息也可以從短信網關發送到SP。另外也提供了短認發送狀態報告,SP發送時可以指定需要此短信的報告。
兩個協議中SP與網關的連接都是基于請求響應模式,雙方互為客戶/服務器(客戶就是請求連接的一方如MT中就是SP發到網關 所以SP是客戶, 在MO中網關是客戶)??蛻舭l出請求,服務器返回對這個請求的響應。
術語解釋
MO由手機用戶提交的短消息
MT由手機用戶接收的短消息
SGIP與短信網關有兩種連接方式、HTTP連接和TCP連接,HTTP連接就是使用HTTP協議發送短信,TCP連接就是向短信網關發送TCP包,下面會說出它與CMPP的區別。。
CMPP只有TCP連接但是它定義了長連接和短連接方式,短連接就是一次連接只進行一個請求-響應操作,操作完成后斷開連接,下次操作再建立連接。長連接則是一個連接中可以進行多次請求-響應操作。
SGIP的TCP連接和CMPP中的長連接使用的是流水線的形式, 也就是可以一連發出好多個請求, 然后再等待它們所有的響應,如果某個響應超過一定時間沒有收到 那么進行重發,兩個協議的重發機制不一樣,sgip是簡單的超時重發,CMPP的重發機制比較煩一點 ,具體可以看協議。
SGIP和CMPP長連接方式的區別是CMP定義了連接檢測包 SGIP沒有,所以CMPP的長連接可以保持很長時間不斷開 SGIP則超時后就會被斷開
MO和MT的實現
短信網關定義了接口(在標準里面有定義)用于接受來自SP的連接
但是到SP的連接兩個標準實現不一樣
SGIP里面規定了SP應該監聽的端口用于接受來自短信網關的連接
但是CMPP中沒有 所以CMPP中實現比較亂 與不同的設備提供商有關
開發時需要看這方面的文檔
還有就是CMPP協議早期的是CMPP1。2 現在是CMPP2。0 編寫時要注意是不是可以使用最新標準(新標準已定義了半年多了 我想支持的還是會有很多 所以這應該不是問題)
最后一點 CMPP中定義了CMPP_QUERY和CMPP_CANCEL 兩個操作
但是這兩個并沒有被多數設備廠商實現 SGIP的功能很簡單, 實現的話都已經實現 所以不是問題