📄 cmpp_protocol.pas
字号:
//文件名称:YiDong_Cmpp.pas
//文件标识:tYD_Cmpp类
//当前版本:1.0
//作 者:邵青山,李朔刚
//mail: sqs@minefont.com lshuogang@sohu.com
//完成日期:2003年5月27日
unit CMPP_Protocol;
interface
const
CMPP_CONNECT: LongWord = $00000001;
CMPP_CONNECT_RESP: LongWord = $80000001;
CMPP_TERMINATE: LongWord = $00000002;
CMPP_TERMINATE_RESP: LongWord = $80000002;
CMPP_SUBMIT: LongWord = $00000004;
CMPP_SUBMIT_RESP: LongWord = $80000004;
CMPP_DELIVER: LongWord = $00000005;
CMPP_DELIVER_RESP: LongWord = $80000005;
CMPP_QUERY: LongWord = $00000006;
CMPP_QUERY_RESP: LongWord = $80000006;
CMPP_CANCEL: LongWord = $00000007;
CMPP_CANCEL_RESP: LongWord = $80000007;
CMPP_ACTIVE_TEST: LongWord = $00000008;
CMPP_ACTIVE_TEST_RESP: LongWord = $80000008;
CMPP_FWD: LongWord = $00000009;
CMPP_FWD_RESP: LongWord = $80000009;
CMPP_MT_ROUTE: LongWord = $00000010;
CMPP_MT_ROUTE_RESP: LongWord = $80000010;
CMPP_MO_ROUTE: LongWord = $00000011;
CMPP_MO_ROUTE_RESP: LongWord = $80000011;
CMPP_GET_ROUTE: LongWord = $00000012;
CMPP_GET_ROUTE_RESP: LongWord = $80000012;
CMPP_MT_ROUTE_UPDATE: LongWord = $00000013;
CMPP_MT_ROUTE_UPDATE_RESP: LongWord = $80000013;
CMPP_MO_ROUTE_UPDATE: LongWord = $00000014;
CMPP_MO_ROUTE_UPDATE_RESP: LongWord = $80000014;
CMPP_PUSH_MT_ROUTE_UPDATE: LongWord = $00000015;
CMPP_PUSH_MT_ROUTE_UPDATE_RESP: LongWord = $80000015;
CMPP_PUSH_MO_ROUTE_UPDATE: LongWord = $00000016;
CMPP_PUSH_MO_ROUTE_UPDATE_RESP: LongWord = $80000016;
CMPP_REPORT: LongWord = $00000050; //CMPP协议中没有此信息,为了区分CMPP_DELIVER包
MSG_LENGTH = 140; //短信内容长度
//Queue_Max_Length = 1000; //队列的最大长度
const
//Connect 返回值
ERR_CONNECT_SUCCESS = $00; //连接正确
ERR_CONNECT_BODY = $01; //结构体错误
ERR_CONNECT_INVALID_SP_ID = $02; //非法SP ID
ERR_CONNECT_SP_AUTHENTICATION = $03; //SP认证错
ERR_CONNECT_VERSION = $04; //版本太高
//Submit 返回值
ERR_SUBMIT_SUCCESS = $00; //成功
ERR_SUBMIT_BODY = $01; //结构体错
ERR_SUBMIT_COMMAND = $02; //命令错
ERR_SUBMIT_MSG_ID = $03; //流水号重复
ERR_SUBMIT_MSG_LENGTH = $04; //消息长度错
ERR_SUBMIT_FEE_CODE = $05; //资费代码错
ERR_SUBMIT_TO_LONG = $06; //信息太长
ERR_SUBMIT_SERVICE_ID = $07; //业务代码错
ERR_SUBMIT_FLOW_CONTROL = $08; //流量控制错
//Deliver 返回值
ERR_DELIVER_SUCCESS = $00; //成功
ERR_DELIVER_BODY = $01; //结构体错
ERR_DELIVER_COMMAND = $02; //命令错
ERR_DELIVER_MSG_ID = $03; //流水号重复
ERR_DELIVER_MSG_LENGTH = $04; //消息长度错
ERR_DELIVER_FEE_CODE = $05; //资费代码错
ERR_DELIVER_TO_LONG = $06; //信息太长
ERR_DELIVER_SERVICE_ID = $07; //业务代码错
ERR_DELIVER_FLOW_CONTROL = $08; //流量控制错
//Cancel 返回值
ERR_CANCEL_SUCCESS = $00; //成功
ERR_CANCEL_FAULT = $01; //失败
//Active 返回值
ERR_ACTIVE_SUCCESS = $00; //成功
type
TEmpty = record //空纪录
end;
//消息头
PCMPP_HEAD_tag = ^TCMPP_HEAD_tag;
TCMPP_HEAD_tag = packed record
Total_Length: LongWord; //4字节 消息总长度(含消息头及消息体)
Command_ID: LongWord; //4字节 命令或响应类型
Sequence_ID: LongWord; //4字节 消息流水号,顺序累加,步长为1,循环使用(一对请求和应答消息的流水号必须相同)
end;
////////////////////////////////////////////////////////////////////////////
// SP 请求连接到 ISMG CMPP_CONNECT消息定义 Login 消息体
PCMPP_CONNECT_tag = ^TCMPP_CONNECT_tag;
TCMPP_CONNECT_tag = packed record
Source_Addr: array[0..5] of Char; //6字节 Octet String 源地址,此处为SP_Id,即SP的企业代码。
AuthenticatorSource: array[0..15] of Char; //16字节 Octet String 用于鉴别源地址。其值通过单向MD5 hash计算得出,表示如下:AuthenticatorSource =MD5(Source_Addr+9 字节的0 +shared secret+timestamp)Shared secret 由中国移动与源地址实体事先商定,timestamp格式为:MMDDHHMMSS,即月日时分秒,10位。
Version: Byte; //1字节 Unsigned Integer 双方协商的版本号(高位4bit表示主版本号,低位4bit表示次版本号),对于3.0的版本,高4bit为3,低4位为0
Timestamp: LongWord; //4字节 Unsigned Integer 时间戳的明文,由客户端产生,格式为MMDDHHMMSS,即月日时分秒,10位数字的整型,右对齐 。
end;
//CMPP_CONNECT_RESP消息定义ISMG到SP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -