package com.pansonlu.smgp;
/**
* <p>Title: SMGP协议包</p>
* <p>Description: 湖南电信短信网关通讯程序-实现对短信网关的连接,短信的收发
* 各种消息的打包,解析</p>
* <p>Copyright: Copyright (c) 2008</p>
* <p>Company: sunrise Ltd.</p>
* @author pansonlu
* @version 1.0
*/
import java.io.*;
import com.pansonlu.common.util.*;
public class SMGP {
/** 数据包长度(包头和包体的长度之和。单位:字节) **/
private int PacketLength = 0;
/** 请求标识 **/
public int RequestID = 0;
/** 序列号(由客户端分配,循环递增) **/
public int SequenceID = 0;
/** ClientID 8 Octet String CP编号或者SMGW编号编号规则参见总册第6节 **/
public String ClientID = "";
public String AuthenticatorClient = "";
/** 登录类型(0=发送短消息, 1=接收短消息,2=收发短消息,其他保留) **/
public byte LoginMode = 2;
/** 时间戳的明文,由客户端产生,格式为MMDDHHMMSS,即月日时分秒,10位数字的整型,右对齐 **/
public int TimeStamp = 0;
/** 客户端支持的版本号(高位4bit表示主版本号,低位4bit表示次版本号) **/
public byte Version = (byte)SMGParameter.Version;
public int Status = 0;
public String AuthenticatorServer = "";
/** 是否状态报告(0=不是,1=是) **/
public byte IsReport = 0;
/************************5.3.3 submit 包*******************************/
public byte MsgLength = 2;
/** 短消息子类型(0=取消订阅,1=订阅请求,2=点播,3=订阅,其他保留) **/
public byte SubType = 2;
/** 是否要求返回状态报告(0=不要求,1=要求) **/
public byte NeedReport = 0;
/** 发送优先级(从0到9) **/
public byte Priority = 1;
/** ServiceID 10 Octet String 业务类型 **/
public String ServiceID = "";
/** FeeType 2 Octet String 收费类型(参见收费类型代码表)
* 00 免费
01 按条收费
02 包月
03 封顶
其他 保留
**/
public String FeeType = "00";
/**FeeCode 6 Octet String 资费代码(单位为分)**/
public String FeeCode = "TEST";
public String FixedFee= "";
/** MsgFormat 1 Octet String 短消息格式(参见短消息格式代码表) **/
public int MsgFormat = 15;
/** ValidTime 17 Octet String 有效时间,格式遵循SMPP3.3协议 **/
public String ValidTime = "";
/** AtTime 17 Octet String 定时发送时间,格式遵循SMPP3.3协议 **/
public String AtTime = "";
/** SrcTermID 21 Octet String 短消息发送用户号码 **/
// 短消息发送用户号码118+CP代码
public String SrcTermID = "";
/** ChargeTermID 21 Octet String 计费用户号码 **/
public String ChargeTermID = "";
/** DestTermIDCount 1 Integer 短消息接收号码总数(≤100) **/
public byte DestTermIDCount = 1;
/** DestTermID 21* DestTerm Count Octet String
* 短消息接收号码(连续存储DestTermIDCount个号码) **/
public String DestTermID = "";
/** MsgContent ≤252 Octet String 短消息内容 **/
public String MsgContent = "";
/** Reserve 8 Octet String 保留 **/
public String Reserve = "";
/************************ 5.3.4 submit_resp ***************/
/** 网关产生的短消息流水号,
* 由三部分组成:网关代码:3字节(BCD码)时间:4字节(BCD码)序列号:3字节(BCD码) **/
public String MsgID = "0";
/**序列号:3字节(BCD码)**/
public int BCDMsgID = 1;
/************************* 5.3.5 deliver ******************/
/** 短消息接收时间(格式:yyyymmddhhmiss,例如20010301200000) **/
public String RecvTime = "";
/** 5.4 状态报告格式 **/
/** 状态报告对应原短消息的MsgID **/
public String Report_ID = "";
/** 短消息提交时间(格式:yyyymmddhhmiss,例如010331200000) **/
public String Report_Submit_date = "";
/** 短消息下发时间(格式:yyyymmddhhmiss,例如010331200000) **/
public String Report_Done_date = "";
/** 短消息状态(参见短消息状态表) **/
public String Report_Stat = "";
/** 参见错误代码表 ***/
public String Report_Error = "";
public final static int SMGP_LOGIN = 0x00000001; //CP或SMGW登录请求 **/
public final static int SMGP_LOGIN_RESP = 0x80000001; //CP或SMGW登录回应 **/
public final static int SMGP_SUBMIT = 0x00000002; //CP发送短消息请求 **/
public final static int SMGP_SUBMIT_RESP = 0x80000002; //CP发送短消息回应 **/
public final static int SMGP_DELIVER = 0x00000003; //SMGW向CP发送短消息请求 **/
public final static int SMGP_DELIVER_RESP = 0x80000003; //SMGW向CP发送短消息回应 **/
public final static int SMGP_ACTIVE_TEST = 0x00000004; //测试通信链路是否正常请求(由客户端发起,CP和SMGW可以通过定时发送此请求来维持连接) **/
public final static int SMGP_ACTIVE_TEST_RESP = 0x80000004; //测试通信链路是否正常回应 **/
public final static int SMGP_QUERY = 0x00000007; //CP统计查询请求 **/
public final static int SMGP_QUERY_RESP = 0x80000007; //CP统计查询回应 **/
public final static int SMGP_EXIT = 0x00000006; //CP统计查询回应 **/
public final static int SMGP_EXIT_RESP = 0x80000006; //CP统计查询回应 **/
/** 消息包 **/
public byte[] dataPack = null;
//一个空的构造器 ,用来解析数据包
public SMGP() {
try {
jbInit();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
//根据请求标识(RequestID)来构造消息
public SMGP(int requestID){
this.RequestID = requestID;
this.SequenceID = getSequenceID();
}
/**
* 打包函数,返回打包后数据字节数组
* @return 打包后数据字节数组
*/
public byte[] pack(){
byte[] retBB = null;
switch(RequestID){
case SMGP.SMGP_LOGIN:
retBB = this.makeLoginMsgPack();
break;
case SMGP.SMGP_LOGIN_RESP:
break;
case SMGP.SMGP_DELIVER:
break;
case SMGP.SMGP_DELIVER_RESP:
retBB = this.makeDeliverRespMsgPack();
break;
case SMGP.SMGP_SUBMIT:
retBB = this.makeSubmitMsgPack();
break;
case SMGP.SMGP_SUBMIT_RESP:
break;
case SMGP.SMGP_ACTIVE_TEST:
retBB = this.makeActiveMsgPack();
break;
case SMGP.SMGP_ACTIVE_TEST_RESP:
retBB = this.makeActiveRespMsgPack();
break;
case SMGP.SMGP_QUERY:
break;
case SMGP.SMGP_QUERY_RESP:
break;
}
return retBB;
}
/**
* 打包消息头
* @param dataOutStream 由调用者传送来的数据输出流
*/
private void packHead( DataOutputStream dataOutStream ) throws Exception
{
try {
dataOutStream.writeInt(PacketLength); //写入包长度
dataOutStream.writeInt(RequestID); //写入命令或响应类型
dataOutStream.writeInt(SequenceID); //写入消息流水号
} catch(IOException e) {
System.out.println("[SMGP] SMGP.packHead() thrown IOException"+e);
throw e;
}
}
/**取得5.3.1 login的消息包
* 7.4.1.1 SMGP_CONNECT消息定义(SP->ISMG)
**/
private byte[] makeLoginMsgPack(){
ByteArrayOutputStream byteArrayOutStream = new ByteArrayOutputStream();
DataOutputStream dataOutStream = new DataOutputStream(byteArrayOutStream);
try{
//MT消息长度
this.PacketLength = 42;
this.ClientID = SMGParameter.SP_Id;
String tempTimeStamp = PublicFunction.getTimeStamp();
this.TimeStamp = Integer.parseInt(tempTimeStamp);
//this.AuthenticatorClient = ClientID +"\0\0\0\0\0\0\0"+SMGParameter.SP_Pwd + this.TimeStamp ;
this.AuthenticatorClient = ClientID +"\0\0\0\0\0\0\0"+SMGParameter.SP_Pwd+ tempTimeStamp;
System.out.println();
System.out.println();
MD5 md5 = new MD5();
this.AuthenticatorClient = md5.encrypt(this.AuthenticatorClient);
//打包MT消息报头
packHead(dataOutStream);
//打包消息体
writeString(dataOutStream,ClientID,8); //写入源地址
writeString_old(dataOutStream,AuthenticatorClient,16); //写入用于鉴别源地址的数据
dataOutStream.writeByte(LoginM
没有合适的资源?快使用搜索试试~ 我知道了~
smgp.rar_SMGP A_SMGP java_java smgp_java smgp m_短信 数据库
共108个文件
class:34个
java:26个
java~1~:13个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 53 浏览量
2022-09-23
08:23:03
上传
评论
收藏 1.28MB RAR 举报
温馨提示
中国电信小灵通短信平台SP端程序,JAVA开发,支持多种数据库,有源码,有详细的注释。
资源详情
资源评论
资源推荐
收起资源包目录
smgp.rar_SMGP A_SMGP java_java smgp_java smgp m_短信 数据库 (108个子文件)
SMGP_RUN.bat 115B
SMGP.cfg 1003B
SMGP.class 13KB
SMGP.class 12KB
SMGPDBAccess.class 11KB
SMGPDBAccess.class 11KB
ConnectionWrapper.class 6KB
ConnectionWrapper.class 6KB
LogUtil.class 5KB
LogUtil.class 5KB
ConnectionPool.class 5KB
ConnectionPool.class 5KB
SMGPMaster.class 5KB
SMGPMaster.class 5KB
PublicFunction.class 4KB
PublicFunction.class 4KB
ConnectionPool$ReConnectThread.class 3KB
ConnectionPool$ReConnectThread.class 3KB
SMGPSendThread.class 3KB
SMGPSendThread.class 3KB
SMGPSocketProcess.class 3KB
SMGPSocketProcess.class 3KB
SMGPReceiveThread.class 3KB
SMGPReceiveThread.class 3KB
Debug.class 3KB
Debug.class 3KB
ConnectionPool$ReCreateThread.class 3KB
ConnectionPool$ReCreateThread.class 3KB
SMGPDBAccess$SMGPMODataSaveThread.class 2KB
SMGPDBAccess$SMGPMODataSaveThread.class 2KB
MD5.class 1KB
MD5.class 1KB
SMGParameter.class 1KB
SMGParameter.class 1KB
ConnectionPool$0.class 241B
ConnectionPool$1.class 223B
com.zhanghao.smgp.dep2 19KB
com.pansonlu.smgp.dep2 19KB
com.pansonlu.common.database.dep2 7KB
com.zhanghao.common.database.dep2 6KB
com.pansonlu.common.util.dep2 6KB
com.zhanghao.common.util.dep2 6KB
SMGP.index 30KB
classes12.jar 1.07MB
SMGP.jar 74KB
SMGP.java 24KB
SMGP.java 24KB
SMGPDBAccess.java 18KB
SMGPDBAccess.java 18KB
ConnectionPool.java 13KB
ConnectionPool.java 13KB
LogUtil.java 8KB
LogUtil.java 8KB
ConnectionWrapper.java 7KB
ConnectionWrapper.java 7KB
SMGPMaster.java 6KB
SMGPMaster.java 6KB
PublicFunction.java 5KB
PublicFunction.java 5KB
Debug.java 4KB
Debug.java 4KB
SMGPSendThread.java 4KB
SMGPSendThread.java 4KB
SMGPReceiveThread.java 3KB
SMGPReceiveThread.java 3KB
SMGPSocketProcess.java 3KB
SMGPSocketProcess.java 3KB
SMGParameter.java 2KB
SMGParameter.java 2KB
MD5.java 1KB
MD5.java 1KB
SMGP.java~1~ 24KB
SMGP.java~1~ 20KB
SMGPDBAccess.java~1~ 18KB
ConnectionPool.java~1~ 13KB
LogUtil.java~1~ 8KB
ConnectionWrapper.java~1~ 7KB
SMGPMaster.java~1~ 6KB
PublicFunction.java~1~ 5KB
SMGPSendThread.java~1~ 4KB
SMGPReceiveThread.java~1~ 3KB
SMGPSocketProcess.java~1~ 3KB
SMGPSocketProcess.java~1~ 3KB
MD5.java~1~ 1KB
SMGP.java~2~ 24KB
SMGPDBAccess.java~2~ 18KB
SMGPMaster.java~2~ 6KB
PublicFunction.java~2~ 5KB
SMGPSendThread.java~2~ 4KB
SMGPReceiveThread.java~2~ 3KB
SMGPSocketProcess.java~2~ 3KB
MD5.java~2~ 1KB
SMGP.java~3~ 24KB
SMGPDBAccess.java~3~ 18KB
SMGPReceiveThread.java~3~ 3KB
SMGP.java~4~ 24KB
SMGPDBAccess.java~4~ 18KB
SMGPDBAccess.java~5~ 18KB
SMGPDBAccess.java~6~ 18KB
SMGPDBAccess.java~7~ 18KB
共 108 条
- 1
- 2
Kinonoyomeo
- 粉丝: 75
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0