open-cmpp 1.0 發(fā)布
open-cmpp采用完全開放的協(xié)議,所提供的源碼,可以任意拷貝、修改和分發(fā)。
open-cmpp包括三部分內(nèi)容:
1、其中對華為的包源碼反編譯然后修改,修正了其中一些小BUG,增加了一些功能。但是還是保留原來的包名和類名。
??? 修正的BUG包括:
??? a)、PEventAdapter中的handle(Event e),原來存在明顯錯(cuò)誤。
??? b)、SMPPSubmitMessage,這個(gè)類的構(gòu)造函數(shù)中,把validityPeriod寫到buf的代碼存在錯(cuò)誤。
??????? 可以說,原來華為Java API的SMPP模塊,是完全不可用的。
2、增加了CMPP滑動(dòng)窗口的支持。原來華為提供CMPP實(shí)現(xiàn),不支持滑動(dòng)窗口,但是其設(shè)計(jì)結(jié)構(gòu)良好,在其上擴(kuò)充實(shí)現(xiàn)滑動(dòng)窗口,也相當(dāng)容易。
3、一個(gè)CMPP模擬網(wǎng)關(guān)。擁有源碼并且可以作二次開發(fā)的CMPP模擬網(wǎng)管,對調(diào)試程序會(huì)有幫助。
下載地址:
http://www.aygfsteel.com/Files/open-cmpp/open-cmpp%201.0.zip
滑動(dòng)窗口的使用方式如下:
final?List<CMPPSubmitMessage>?successList?=?new?ArrayList<CMPPSubmitMessage>();
final?List<CMPPSubmitMessage>?failedList?=?new?ArrayList<CMPPSubmitMessage>();
AyncSMProxyEventListener?listener?=?new?AyncSMProxyEventListener()?{
????public?void?onReceive(CMPPDeliverMessage?deliver)?{
????????System.out.println("RECEIVE?MSG?:?"?+?deliver.toString());
????????receiveList.add(deliver);
????}
????public?void?onSubmitSuccess(CMPPSubmitMessage?submit,
????????????CMPPSubmitRepMessage?submit_resp)?{
????????System.out.println("SEND?SUCCESS?:?"?+?submit.getSequenceId());
????????successList.add(submit);
????}
????public?void?onSubmitFailed(CMPPSubmitMessage?submit,
????????????CMPPSubmitRepMessage?submit_resp)?{
????????System.out.println("SEND?FAILED?:?"?+?submit.getSequenceId()
????????????????+?",?RESULT?"?+?submit_resp.getResult());
????????failedList.add(submit);
????}
};
AyncSMProxy?proxy?=?new?AyncSMProxy(listener);
String?rcvMobile[]?=?new?String[]?{?"12345678901"?};
for?(int?i?=?0;?i?<?10;?++i)?{
????long?msgId?=?i;
????CMPPSubmitMessage?submit?=?new?CMPPSubmitMessage(msgId,?1,?1,?1,?1,
????????????"websms",?1,?"",?0,?0,?0,?"websms",?"02",?"10",?new?Date(
????????????????????System.currentTimeMillis()?+?(long)?0xa4cb800),
????????????null,?"888813512345678",?rcvMobile,?("testmessage_"?+?i)
????????????????????.getBytes(),?"");
????proxy.send_by_async(submit);
}
proxy.close();