⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmpp_proto.h

📁 SMS gateway. SMS protocol for CHINA mobile, unicom, lingtong. Using mysql to exchange message.
💻 H
字号:
/**********************************************************************  FileName            : cmpp_proto.h  Description         : CMPP协议头文件  Version             : 1.0  Date                : 2003年4月12日  Author              : 刘荣辉  Other               : ***********************************************************************/#ifndef _CMPP_PROTO_H_#define _CMPP_PROTO_H_#ifdef _AIX  #pragma options align=packed#elif defined _HPUX  #pragma pack 1#else  #pragma pack (1)#endif#define CMPPVersion 	0x20;     /*系统支持的CMPP版本号*/#define CMPP_Pack_MAX 	2400;   /*最大的CMPP包长度(群发submit包)*/#define CMPP_WINDOW_SIZE	256	//CMPP滑动窗口的大小(流量控制),default : 16#define CMPP_SEND_TIMEOUT	60	//超时重发(秒)#define CMPP_SEND_RETRIES	2	//最大可发送次数#define CMPP_CONNECT 	   0x1#define CMPP_CONNECT_RESP 	0x80000001#define CMPP_TERMINATE     0x2#define CMPP_TERMINATE_RESP     0x80000002#define CMPP_SUBMIT   	   0x4#define CMPP_SUBMIT_RESP	0x80000004#define CMPP_DELIVER       0x5#define CMPP_DELIVER_RESP       0x80000005#define CMPP_QUERY   	   0x6#define CMPP_QUERY_RESP    	0x80000006#define CMPP_CANCEL    	   0x7#define CMPP_CANCEL_RESP    	0x80000007#define CMPP_ACTIVE_TEST   0x8#define CMPP_ACTIVE_TEST_RESP   0x80000008#define CMPP_FWD  	   0x9#define CMPP_FWD_RESP    	0x80000009#define CMPP_MT_ROUTE      0x10#define CMPP_MT_ROUTE_RESP  	0x80000010#define CMPP_MO_ROUTE      0x11#define CMPP_MO_ROUTE_RESP  	0x80000011#define CMPP_GET_ROUTE     0x12#define CMPP_GET_ROUTE_RESP     0x80000012#define CMPP_MT_ROUTE_UPDATE  	   0x13#define CMPP_MT_ROUTE_UPDATE_RESP         0x80000013#define CMPP_MO_ROUTE_UPDATE   	   0x14#define CMPP_MO_ROUTE_UPDATE_RESP         0x80000014#define CMPP_PUSH_MT_ROUTE_UPDATE  0x15#define CMPP_PUSH_MT_ROUTE_UPDATE_RESP    0x80000015#define CMPP_PUSH_MO_ROUTE_UPDATE  0x16#define CMPP_PUSH_MO_ROUTE_UPDATE_RESP    0x80000016typedef struct _CMPP_HEAD{       unsigned int Total_Length;  //消息总长度(含消息头及消息体)       unsigned int Command_Id;    //命令或响应类型       unsigned int Sequence_Id;   //消息流水号,顺序累加,步长为1,循环使用(一对请求和应答消息的流水号必须相同)}CMPP_Head;typedef struct _CMPP_CONNECT{              CMPP_Head Head;		//包头       char Source_Addr[6];     //源地址SP_Id,即SP的企业代码,对于下节点来说填服务代码(接入号)       char AuthenticatorSource[16]; //用于鉴别源地址。其值通过单向MD5 hash计算得出,表示如下:AuthenticatorSource =MD5(Source_Addr+9 字节的0 +shared secret+timestamp)Shared secret 由中国移动与源地址实体事先商定,timestamp格式为:MMDDHHMMSS,即月日时分秒,10位。       unsigned char Version;      //双方协商的版本号(高位4bit表示主版本号,低位4bit表示次版本号)       unsigned int Timestamp;             //时间戳的明文,由客户端产生,格式为MMDDHHMMSS,即月日时分秒,10位数字的整型,右对齐 。}CMPP_Connect;typedef struct _CMPP_CONNECT_RESP{       CMPP_Head Head;		//包头       unsigned char Status;            //状态0:正确1:消息结构错 2:非法源地址 3:认证错 4:版本太高  5~ :其他错误       char AuthenticatorISMG[16]; //ISMG认证码,用于鉴别ISMG。其值通过单向MD5 hash计算得出,表示如下:AuthenticatorISMG =MD5(Status+AuthenticatorSource+shared secret),Shared secret 由中国移动与源地址实体事先商定,AuthenticatorSource为源地址实体发送给ISMG的对应消息CMPP_Connect中的值。 认证出错时,此项为空       unsigned char Version;         //服务器支持的最高版本号}CMPP_Connect_Resp;typedef struct _CMPP_TERMINATE{       unsigned int Total_Length;  //消息总长度(含消息头及消息体)       unsigned int Command_Id;    //命令或响应类型       unsigned int Sequence_Id;   //消息流水号,顺序累加,步长为1,循环使用(一对请求和应答消息的流水号必须相同)}CMPP_Terminate;typedef struct _CMPP_TERMINATE_RESP{       unsigned int Total_Length;  //消息总长度(含消息头及消息体)       unsigned int Command_Id;    //命令或响应类型       unsigned int Sequence_Id;   //消息流水号,顺序累加,步长为1,循环使用(一对请求和应答消息的流水号必须相同)}CMPP_Terminate_Resp;typedef struct _CMPP_SUBMIT{       CMPP_Head Head;		//包头       //unsigned char Msg_Id[8];          //信息标识,由SP侧短信网关本身产生,本处填空。	   long long Msg_Id;       unsigned char Pk_total;         //相同Msg_Id的信息总条数,从1开始       unsigned char Pk_number;        //相同Msg_Id的信息序号,从1开始       unsigned char Registered_Delivery;   //是否要求返回状态确认报告:0:不需要1:需要2:产生SMC话单 (该类型短信仅供网关计费使用,不发送给目的终端)       unsigned char Msg_level;             //信息级别       char Service_Id[10]; 		//业务类型,是数字、字母和符号的组合。       unsigned char Fee_UserType;    //计费用户类型字段0:对目的终端MSISDN计费;1:对源终端MSISDN计费;2:对SP计费;3:表示本字段无效,对谁计费参见Fee_terminal_Id字段。       char Fee_terminal_Id[21];  	//被计费用户的号码(如本字节填空,则表示本字段无效,对谁计费参见Fee_Userstruct字段,本字段与Fee_Userstruct字段互斥)       unsigned char TP_pId;         //GSM协议类型。详细是解释请参考GSM03.40中的9.2.3.9       unsigned char TP_udhi;        //GSM协议类型。详细是解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐       unsigned char Msg_Fmt;        //信息格式  0:ASCII串  3:短信写卡操作  4:二进制信息  8:UCS2编码15:含GB汉字       char Msg_src[6];   //信息内容来源(SP_Id)       char FeeType[2];   //资费类别01:对"计费用户号码"免费       char FeeCode[6];    //资费代码(以分为单位)       char ValId_Time[17]; //存活有效期,格式遵循SMPP3.3协议       char At_Time[17];    //定时发送时间,格式遵循SMPP3.3协议       char Src_Id[21];     //源号码SP的服务代码或前缀为服务代码的长号码, 网关将该号码完整的填到SMPP协议Submit_SM消息相应的source_addr字段,该号码最终在用户手机上显示为短消息的主叫号码       unsigned char DestUsr_tl;              //接收信息的用户数量(小于100个用户)       char Dest_terminal_Id[21];   //接收短信的MSISDN号码       unsigned char Msg_Length;      //信息长度(Msg_Fmt值为0时:<160个字节;其它<=140个字节)       char Msg_Content[140];   //信息内容       char Reserve[8];     //保留}CMPP_Submit;typedef struct _CMPP_SUBMIT_RESP{       CMPP_Head Head;		//包头       //unsigned char Msg_Id[8]; 	   long long Msg_Id;       unsigned char Result;}CMPP_Submit_Resp;typedef struct _CMPP_QUERY{       CMPP_Head Head;		//包头       unsigned char Time[8]; 	//时间YYYYMMDD(精确至日)       unsigned char Query_Type;     //查询类别0:总数查询1:按业务类型查询       char Query_Code[10]; 	 //查询码当Query_struct为0时,此项无效;当Query_struct为1时,此项填写业务类型Service_Id.       char Reserve[8]; 	 //保留}CMPP_Query;typedef struct _CMPP_QUERY_RESP{       CMPP_Head Head;		//包头       unsigned char Time[8];    //时间(精确至日)       char Query_struct[1];         //查询类别0:总数查询1:按业务类型查询       char Query_Code[10];  //查询码       unsigned int MT_TLMsg;   //从SP接收信息总数       unsigned int MT_Tlusr;   //从SP接收用户总数       unsigned int MT_Scs;     //成功转发数量       unsigned int MT_WT;      //待转发数量       unsigned int MT_FL;      //转发失败数量       unsigned int MO_Scs;     //向SP成功送达数量       unsigned int MO_WT;      //向SP待送达数量       unsigned int MO_FL;      //向SP送达失败数量}CMPP_Query_Resp;typedef struct _CMPP_REPORT{       //unsigned char Msg_ID[8];    //信息标识SP提交短信(CMPP_SUBMIT)操作时,与SP相连的ISMG产生的Msg_Id。	   long long Msg_Id;       char Stat[7];               //发送短信的应答结果       char Submit_time[10];       char Done_time[10];       char Dest_terminal_Id[21];   //目的终端MSISDN号码(SP发送CMPP_SUBMIT消息的目标终端)       unsigned int SMSC_sequence;  //取自SMSC发送状态报告的消息体中的消息标识。}CMPP_Report;typedef struct _CMPP_DELIVER{       CMPP_Head Head;		//包头       //unsigned char Msg_Id[8];      //信息标识	   long long Msg_Id;       char Dest_Id[21]; 	 //目的号码       char Service_Id[10]; 	 //业务类型,是数字、字母和符号的组合。       unsigned char TP_pid;                //GSM协议类型。详细解释请参考GSM03.40中的9.2.3.9       unsigned char TP_udhi;               //GSM协议类型。详细解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐       unsigned char Msg_Fmt;               //信息格式       char Src_terminal_Id[21];  //源终端MSISDN号码       unsigned char Registered_Delivery;      //是否为状态报告, 0非状态报告, 1状态报告       unsigned char Msg_Length;               //消息长度       union {             char Msg_Content[140];  //消息内容            CMPP_Report Report;          }Deliver_Msg;       char Reserved[8];       //保留项}CMPP_Deliver;typedef struct _CMPP_DELIVER_RESP{       CMPP_Head Head;		//包头       //unsigned char Msg_Id[8];	   long long Msg_Id;       unsigned char Result;}CMPP_Deliver_Resp;typedef struct _CMPP_CANCEL{       CMPP_Head Head;		//包头       //unsigned char Msg_Id[8];	  //信息标识(SP想要删除的信息标识)	   long long Msg_Id;}CMPP_Cancel;typedef struct _CMPP_CANCEL_RESP{       CMPP_Head Head;		//包头       unsigned char Success_Id;  //成功标识 0:成功 1:失败	}CMPP_Cancel_Resp;typedef struct _CMPP_ACTIVE_TEST{       unsigned int Total_Length;  //消息总长度(含消息头及消息体)       unsigned int Command_Id;    //命令或响应类型       unsigned int Sequence_Id;   //消息流水号,顺序累加,步长为1,循环使用(一对请求和应答消息的流水号必须相同)}CMPP_Active_Test;typedef struct _CMPP_ACTIVE_TEST_RESP{       CMPP_Head Head;		//包头       char Reserved;}CMPP_Active_Test_Resp;#ifdef _AIX  #pragma options align=reset#elif defined _HPUX  #pragma pack 4#else  #pragma pack ()#endif#endif /*_CMPP_PROTO_H_*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -