📄 cngp.h
字号:
//*******************************************************************************
//
// 文件名: cngp.h
// 描述:
// 中国网通短信
// 短消息网关协议实现.
// 版本: 1.0.0
// 1.1 - 改变了submitresp的处理方式,在submit函数中直接返回.
// 2.0 - 根据CNGP2.0修改[2005.09]
//
// 作者:
// 日期:
// 介绍:
//
//*******************************************************************************
#if !defined(AFX_CNGP_H__A4DFA71A_1AAF_4DE6_A299_3A154220E698__INCLUDED_)
#define AFX_CNGP_H__A4DFA71A_1AAF_4DE6_A299_3A154220E698__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include <winsock2.h>
#pragma comment(lib, "ws2_32")
#pragma pack(1)
#ifdef CNGP_IMPORT
#define CNGP_API extern "C" __declspec(dllimport)
#else
#define CNGP_API extern "C" __declspec(dllexport)
#endif
//
//定义cngp20 消息结构.
//
//**********************************************************************
// STRUCTURE OF CNGP_HEAD.
// 以及所有没有消息体的消息定义
//**********************************************************************
typedef struct cngp_head {
unsigned int nTotalLength;
unsigned int nCommandId;
unsigned int nCommandStatus;
unsigned int nSeqId;
} CNGP_HEAD, CNGP_EXIT, CNGP_EXIT_RESP, CNGP_ACTIVETEST, CNGP_ACTIVETEST_RESP;
//**********************************************************************
// STRUCTURE OF CNGP_LOGIN.
//**********************************************************************
typedef struct cngp_login {
char sClientID[10]; // SP接入网关标识.
char sAuthClient[16]; // md5(clientid + 7*0+ pwd + timestamp)
unsigned char uchLoginMode; // 0=发送, 1=接收, 2=收发.
unsigned int nTimeStamp; // MMDDHHMMSS(月日时分秒)
unsigned char uchVersion; // 0x20
} CNGP_LOGIN;
//**********************************************************************
// STRUCTURE OF CNGP_LOGIN_RESP.
//**********************************************************************
typedef struct cngp_login_resp {
char sAuthServer[16]; // md5(status + authclient + pwd)
unsigned char uchVersion;
} CNGP_LOGIN_RESP;
typedef struct cngp_tlv_221 {
unsigned short tag;
unsigned short length;
unsigned char value;
} CNGP_TLV_PROTOCOLID, CNGP_TLV_CONGESTIONSTATE;
typedef struct cngp_tlv_spid {
unsigned short tag;
unsigned short length;
char value[10];
} CNGP_TLV_SPID;
typedef struct cngp_tlv_srctermid {
unsigned short tag;
unsigned short length;
char value[21];
} CNGP_TLV_SRCTERMID;
//**********************************************************************
// STRUCTURE OF CNGP_SUBMIT_DELIVER_RESP.
//**********************************************************************
typedef struct cngp_submit_deliver_resp {
char sMsgid[10]; // 网关代码:3字节(BCD), 时间:4字节(BCD), 序列号:3字节(BCD)
CNGP_TLV_CONGESTIONSTATE cstate;
} CNGP_SUBMIT_RESP, CNGP_DELIVER_RESP;
//**********************************************************************
// STRUCTURE OF CNGP_DELIVER_StatusReport.
//**********************************************************************
typedef struct cngp_status_report {
char id[10]; // 状态报告对应源消息的MsgID
char sub[3];
char dlvrd[3];
char submitdate[10]; // 短消息提交的时间yyyymmddhhmiss(如:010331200000)
char donedate[10]; // 短消息下发的时间
char stat[7]; // 短消息状态
char err[3]; // 参见错误代码表
char txt[20];
} CNGP_STATUS_REPORT;
//**********************************************************************
// STRUCTURE OF CNGP_DELIVER.
//**********************************************************************
typedef struct cngp_deliver {
char sMsgid[10]; // 网关产生的流水号
unsigned char uchIsReport; // 是否是状态报告(0 = 不是, 1 = 是)
unsigned char uchMsgfmt;
char sRecvTime[14]; // 短消息接收时间(yyyymmddhhmiss, 2001 03 01 200000)
char sSrcTermId[21]; // 短消息发送号码
char sDstTermId[21]; // 短消息接收号码
unsigned char uchMsgLen; // 短消息长度
union {
char sMsgcontent[254];
cngp_status_report csr;
} MO_Msg_Content;
CNGP_TLV_PROTOCOLID pid;
} CNGP_DELIVER;
//**********************************************************************
// STRUCTURE OF CNGP_SUBMIT.
//**********************************************************************
typedef struct cngp_submit {
char sSpid[10];
unsigned char uchSubType; // 短消息子类型(0=取消订阅,1=订阅请求,2=点播,3=订阅,其他保留)
unsigned char uchNeedReport; // 是否要求返回状态报告(0=不要求,1=要求)
unsigned char uchPriority; // 发送优先级(0-9)
char sServiceId[10]; // 业务类型
char sFeeType[2]; // 收费类型(参见收费类型代码表)
unsigned char uchFeeUserType; // 计费用户类型
char sFeeCode[6]; // 资费代码(单位为分)
unsigned char uchMsgFmt;
char sValidTime[17];
char sAtTime[17];
char sSrcTermId[21]; // 短消息发送用户号码
char sChargeTermId[21]; // 计费用户号码
unsigned char uchDstUsrTl; // 短消息接收用户总数(<=100)
char sDstTermId[21*100];
unsigned char uchMsgLen;
char sMsgContent[254];
CNGP_TLV_PROTOCOLID pid;
} CNGP_SUBMIT;
typedef struct MtStr {
CNGP_HEAD pk_head;
CNGP_SUBMIT_RESP pk_submitresp;
} MTSTR;
typedef struct MoStr {
CNGP_HEAD pk_head;
CNGP_DELIVER pk_deliver;
} MOSTR;
CNGP_API int __stdcall Start(const char *pchSmgIp, \
const int nSmgPort, const char *pchClientID, const char *pchPwd, \
const unsigned char uchVersion, void (__stdcall *pOnDeliver)(MoStr mo));
CNGP_API int __stdcall Release();
CNGP_API int __stdcall SubmitEx(cngp_submit mt, char* sMsgid, int& nStatus);
CNGP_API int __stdcall Submit(char *pchSPid, unsigned char uchSubType, unsigned char uchNeedReport, \
unsigned char uchPriority, char *pchServiceID, char *pchFeeType, \
unsigned char uchFeeUserType, char *pchFeeCode, \
unsigned char uchMsgFmt, char *pchValidTime, char *pchAtTime, \
char *pchSrcTermID, char *pchChargeTermID, unsigned char uchDstTermCount, \
char *pchDstTermID, unsigned char uchMsgLen, char *pchMsgContent, \
char* sMsgid, int& nStatus); // sMsgid,nStatus是返回值
#endif // !defined(AFX_SMGP_H__A4DFA71A_1AAF_4DE6_A299_3A154220E698__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -