open-cmpp 1.0 發布
open-cmpp采用完全開放的協議,所提供的源碼,可以任意拷貝、修改和分發。
open-cmpp包括三部分內容:
1、其中對華為的包源碼反編譯然后修改,修正了其中一些小BUG,增加了一些功能。但是還是保留原來的包名和類名。
??? 修正的BUG包括:
??? a)、PEventAdapter中的handle(Event e),原來存在明顯錯誤。
??? b)、SMPPSubmitMessage,這個類的構造函數中,把validityPeriod寫到buf的代碼存在錯誤。
??????? 可以說,原來華為Java API的SMPP模塊,是完全不可用的。
2、增加了CMPP滑動窗口的支持。原來華為提供CMPP實現,不支持滑動窗口,但是其設計結構良好,在其上擴充實現滑動窗口,也相當容易。
3、一個CMPP模擬網關。擁有源碼并且可以作二次開發的CMPP模擬網管,對調試程序會有幫助。
下載地址:
http://www.aygfsteel.com/Files/open-cmpp/open-cmpp%201.0.zip
滑動窗口的使用方式如下:
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();