資源簡介
java cmpp2.0 3.0 無jar純源碼demo(含服務端測試工具)[20171205]
找了挺多資料,CMPP的資源很多,但可以參考可用的不多,
特此開源cmpp的DEMO程序,無jar插件,純源碼實現。
語言為:java
工具為:Intellij IDEA 2017
附帶第三方CMPP服務器測試工具,便于調試。
注解詳細如:
private long Msg_Id=0x00;//信息標識,由SP接入的短信網關本身產生,本處填空。
private byte Pk_total=0x01;//相同Msg_Id的信息總條數,從1開始
private byte Pk_number=0x01;//相同Msg_Id的信息序號,從1開始
private byte Registered_Delivery=0x01;//是否要求返回狀態確認報告:0:不需要 1:需要
private byte Msg_level=0x01;//信息級別
private String Service_Id="";//業務類型,是數字、字母和符號的組合。
private byte Fee_UserType=0x00;//計費用戶類型字段 0:對目的終端MSISDN計費; 1:對源終端MSISDN計費;2:對SP計費
private String Fee_terminal_Id="";//被計費用戶的號碼
private byte TP_pId=0x00;//GSM協議類型
private byte TP_udhi=0x00;//GSM協議類型。詳細是解釋請參考
private byte Msg_Fmt=0x0f;//信息格式0:ASCII串 3:短信寫卡操作 4:二進制信息 8:UCS2編碼 (0f)15:含GB漢字
private String Msg_src="";//信息內容來源(SP_Id)
private String FeeType="01";//資費類別 01:對“計費用戶號碼”免費 02:對“計費用戶號碼”按條計信息費 03:對“計費用戶號碼”按包月收取信息費 04:對“計費用戶號碼”的信息費封頂 05:對“計費用戶號碼”的收費是由SP實現
private String FeeCode="000000";//資費代碼(以分為單位)
private String ValId_Time="";//存活有效期
private String At_Time="";//定時發送時間
private String Src_Id="";//源號碼 SP的服務代碼或前綴為服務代碼的長號碼, 網關將該號碼完整的填到SMPP協議Submit_SM消息相應的source_addr字段,該號碼最終在用戶手機上顯示為短消息的主叫號碼
private byte DestUsr_tl=0x01;//接收信息的用戶數量(小于100個用戶)
private String Dest_terminal_Id="";//接收短信的MSISDN號碼
private byte Msg_Length;//信息長度(Msg_Fmt值為0時:<160個字節;其它<=140個字節)
private byte[] Msg_Content;//信息內容
private String Reserve="";//保留

代碼片段和文件信息
import?cmpp.*;
import?java.io.DataInputStream;
import?java.io.DataOutputStream;
import?java.io.IOException;
import?java.io.UnsupportedEncodingException;
import?java.net.Socket;
import?java.net.UnknownHostException;
import?java.util.ArrayList;
import?java.util.List;
/**
?*?Created?by?qq:599097707?輕舟?on?2017/12/5/005.
?*/
public?class?testMain?{
????public?static?Socket?socket;
????public?static?String?IP=“192.168.1.169“;//服務器IP
????public?static?int?port=9966;//端口號
????public?static?String?spid=“2123“;//企業代碼?和?spid?一樣
????public?static?String?secret=“abc@aaa“;//
????public?static?DataInputStream?in;
????public?static?DataOutputStream?out;
????/***
?????*?創建指定地址socket連接
?????*?@return
?????*/
????public?static?Socket?getSocketInstance(){
????????try?{
????????????socket=new?Socket(IPport);
????????????socket.setKeepAlive(true);
????????????socket.setSoTimeout(10000);
????????}?catch?(UnknownHostException?e)?{
????????????//?TODO?Auto-generated?catch?block
????????????e.printStackTrace();
????????}?catch?(IOException?e)?{
????????????//?TODO?Auto-generated?catch?block
????????????e.printStackTrace();
????????}
????????return?socket;
????}
????/***
?????*?connect初始化連接服務器
?????*?@throws?IOException
?????*/
????public?static?void?connectISMG()?throws?IOException{
????????System.out.println(“正在連接到服務器“+IP);
????????CMPP_CONNECT?connect=new?CMPP_CONNECT();
????????connect.setTotalLength(12+6+16+1+4);
????????connect.setCommandId(0x00000001);//請求連接
????????connect.setSequenceId(MsgUtils.getSequence());
????????connect.setSourceAddr(spid);//源地址,此處為SP_Id,即SP的企業代碼。
????????String?timestamp=MsgUtils.getTimestamp();
????????connect.setAuthenticatorSource(MsgUtils.getAuthenticatorSource(spid?secret?timestamp));//用于鑒別源地址。其值通過單向MD5?hash計算得出
????????connect.setTimestamp(Integer.parseInt(timestamp));//時間戳的明文由客戶端產生格式為MMDDHHMMSS,即月日時分秒,10位數字的整型,右對齊?。
????????//connect.setVersion((byte)0x20);//雙方協商的版本號(高位4bit表示主版本號低位4bit表示次版本號)
????????connect.setVersion((byte)0x14);//雙方協商的版本號(高位4bit表示主版本號低位4bit表示次版本號)
????????List?dataList=new?ArrayList();
????????dataList.add(connect.toByteArray());
????????out=new?DataOutputStream(getSocketInstance().getOutputStream());
????????if(out!=null&&null!=dataList){
????????????for(byte[]data:dataList){
????????????????out.write(data);
????????????????out.flush();
????????????????System.out.println(“connect數據發送完成“);
????????????}
????????}
????????in=new?DataInputStream(socket.getInputStream());
????????int?len=in.readInt();
????????List?getData=new?ArrayList();
????????if(null!=in&&0!=len){
????????????byte[]?data=new?byte[len-4];
????????????in.read(data);
????????????getData.add(data);
????????????for(byte[]?returnData:getData){
????????????????Message_Header?header=new?Message_Header(returnData);
????????????????switch(header.getCommandId()){
????????????????????case?0x80000001:
????????????????????????CMPP_CONNE
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????327680??2004-05-31?10:24??cmpp2smg\cmpp2smg.exe
?????文件?????176128??2004-05-31?10:23??cmpp2smg\CMPPAPI.dll
?????文件???????1078??2004-05-29?16:24??cmpp2smg\intro.txt
?????文件???????6317??2017-12-05?18:39??cmpp2smg\log\20171205.log
?????文件????????169??2017-12-05?18:06??cmpp2smg\setting.ini
?????目錄??????????0??2017-12-05?17:29??cmpp2smg\log
?????目錄??????????0??2017-12-05?17:29??cmpp2smg
-----------?---------??----------?-----??----
???????????????511372????????????????????7
- 上一篇:分布式旅行預訂系統--模仿分布式數據庫
- 下一篇:java排課系統正式使用
評論
共有 條評論