资源简介
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排课系统正式使用
评论
共有 条评论