梁麗麗,甄占坡
【摘 要】目前擁有手機(jī)的人數(shù)越來越多,與手機(jī)相關(guān)的業(yè)務(wù)隨之產(chǎn)生,如定制天氣預(yù)報(bào)、手機(jī)終端發(fā)送精彩短信等,這些業(yè)務(wù)給人們的生活帶來了便利。本文從CMPP3.0網(wǎng)關(guān)的性能需求、軟件硬件環(huán)境、程序?qū)崿F(xiàn)等方面介紹了基于C#的CMPP3.0協(xié)議的實(shí)現(xiàn)與開發(fā)。
【關(guān)鍵詞】CMPP3.0;手機(jī)短信;SP
自3G網(wǎng)絡(luò)在中國使用以來,截至2013年3月底,中國大陸手機(jī)用戶總數(shù)達(dá)到113204.3萬,1-2月全國移動(dòng)短信業(yè)務(wù)量1576.1億條,其中點(diǎn)對(duì)點(diǎn)短信量878.1億條,移動(dòng)互聯(lián)網(wǎng)服務(wù)提供商向用戶提供了在INTERNTE上注冊(cè)個(gè)人信息,并定制新聞、財(cái)經(jīng)、購物、天氣預(yù)報(bào)等相關(guān)服務(wù)。移動(dòng)的短信增值接口協(xié)議cmpp3.0協(xié)議是針對(duì)手機(jī)用戶提供精彩短信內(nèi)容的一個(gè)SP(短信增值業(yè)務(wù))的接口協(xié)議,用來實(shí)現(xiàn)手機(jī)終端發(fā)送精彩短信的通道。
1.Cmpp3.0網(wǎng)關(guān)的性能需求
通過對(duì)手機(jī)短信增值業(yè)務(wù)的研究,結(jié)合SP運(yùn)營(yíng)商的一些再即時(shí)處理方面的要求,勾畫出本系統(tǒng)的業(yè)務(wù)模型和功能模塊的劃分。本系統(tǒng)采用B/S架構(gòu),模塊主要包括號(hào)碼發(fā)送管理、系統(tǒng)參數(shù)管理網(wǎng)關(guān)下發(fā)流量管理、操作日志查詢四個(gè)部分,其中部分內(nèi)容如下:(1)下發(fā)流量管理:利用C#多線程創(chuàng)建兩條鏈路進(jìn)行下發(fā),提高單位時(shí)間內(nèi)下發(fā)的速度。(2)日志狀態(tài)報(bào)告的管理:利用數(shù)據(jù)庫的存儲(chǔ)進(jìn)行寫入操作,把下發(fā)給用戶的短信狀態(tài)報(bào)告寫入數(shù)據(jù)庫中,提供給管理平臺(tái)進(jìn)行查詢操作。(3)系統(tǒng)參數(shù)管理:利用windowsAPI函數(shù)去讀ini文件的配置,來靈活連接,應(yīng)對(duì)移動(dòng)CMPP服務(wù)端更改服務(wù)端地址后,CMPP客戶端方便及時(shí)調(diào)整。
2.軟硬件環(huán)境要求
2.1 軟件要求
主要包括操作系統(tǒng)、Internet信息服務(wù)器和.NET Framework等。
2.2 硬件配置
(1)CPU處理器:建議使用志強(qiáng)E5級(jí)處理器。(2)內(nèi)存:針對(duì)操作系統(tǒng)NET Framework 3.5應(yīng)用程序的有不同的內(nèi)存要求,如Windows Server 2003:2G內(nèi)存。(3)硬盤:系統(tǒng)驅(qū)動(dòng)器上要求900MB的可用空間,安裝驅(qū)動(dòng)器上要求3.3GB的可用空間,可選的MSDN庫文檔,另外需要1.9GB的可用空間。
3.程序設(shè)計(jì)
主界面利用多線程來控制顯示信息,如圖1所示。
圖1 主界面
3.1 cmpp3.0網(wǎng)關(guān)參數(shù)的初始化
程序在啟動(dòng)階段加載硬盤上的gwcfg.ini配置文件,調(diào)用windows的API方法,主要有WritePrivateProfileString和GetPrivateProfileString兩個(gè)方法。
3.2 實(shí)現(xiàn)發(fā)送過程中對(duì)發(fā)送流量的控制
利用socket網(wǎng)絡(luò)字節(jié)流發(fā)送的時(shí)間和本地把要下發(fā)的消息組織成CMPP網(wǎng)絡(luò)包體的時(shí)間和需要暫停的時(shí)間差計(jì)算出來,來控制精確的數(shù)據(jù)發(fā)送流量。主要代碼如下:
DateTime d1=System.DateTime.Now;
SendMsg(src_num,mobile_num,ServiceType,content,linkid);
DateTime d2=System.DateTime.Now;
float dhm=(float)(d2-d1).TotalMilliseconds;
float smsproc=((float)1000/int.Parse(smssendproc))-dhm;
int sp=(int)Math.Round(smsproc,0);
if(sp>0){Thread.Sleep(sp);}
3.3 日志處理模塊
創(chuàng)建一個(gè)日志類class Writelog和日志消息類class showmessage,其中為了控制日志文件的大小限定了2個(gè)條件,當(dāng)文件記錄時(shí)長(zhǎng)為120秒時(shí)進(jìn)行數(shù)據(jù)的保存。主要代碼為:
logn++;
if(logn==1){
rq=System.DateTime.Now.ToString("yyyyMMddhhmmss");
ss=savepathstr+"smsgw"+rq+".log.tmp";
ssnew=ss.Replace(".tmp","");
sr=new StreamWriter(@ss,true);
content="";
}lock(writemsg){
if(writemsg.reportInfo!=""){
content=writemsg.reportInfo;
writemsg.reportInfo="";
sr.Write(content);
sr.Flush();}}
if(logn==120){
sr.close();
FileInfo filn=new FileInfo(ss);
if(filn.Length!=0){System.IO.File.Move(ss,ssnew);}
delewav(ss);
logn=0;}
sleep(1000);
4.結(jié)束語
通過系統(tǒng)和全面的分析,本文設(shè)計(jì)開發(fā)了基于.NET的SP的cmpp3.0業(yè)務(wù)網(wǎng)關(guān)客戶端系統(tǒng),設(shè)計(jì)的軟件系統(tǒng)在功能上達(dá)到了SP對(duì)業(yè)務(wù)的設(shè)計(jì)要求,基本滿足了中小型SP提供商的軟件產(chǎn)品需要。
參考文獻(xiàn):
[1]Simon Robinson,K.Scott Allen等.C#高級(jí)編程[M].清華大學(xué)出版社,2002.
[2]Tom Archer.C#技術(shù)內(nèi)幕[M].清華大學(xué)出版社,2002.
[3]沉舟.Microsoft.NET編程語言C#[M].希望電子出版社,2001.
[4]電腦編程技巧與維護(hù)雜志社.C#編程技巧典型案例解析[M].中國電力出版社,2005.