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

📄 smei.h

📁 小灵通(网通)短信接口程序
💻 H
字号:
#if !defined(__SMEI_H__)

#define __SMEI_H__

#define	CNGP_SEND_TIMEOUT	3
#define CNGP_RECV_TIMEOUT	30

#define SP_ERROR_OK						0
#define SP_ERROR_START					128

#define SP_ERROR_INVALID_FEETYPE		SP_ERROR_START + 1
#define SP_ERROR_SOCKET_CREATEFAILED	SP_ERROR_START + 2
#define SP_ERROR_SOCKET_CONNECTFAILED	SP_ERROR_START + 3
#define SP_ERROR_SOCKET_SELECTFAILED	SP_ERROR_START + 4
#define SP_ERROR_SOCKET_RECVTIMEOUT		SP_ERROR_START + 5
#define SP_ERROR_SOCKET_RECVERROR		SP_ERROR_START + 6
#define SP_ERROR_SOCKET_SENDTIMEOUT		SP_ERROR_START + 7
#define SP_ERROR_SOCKET_SENDERROR		SP_ERROR_START + 8
#define SP_ERROR_OVERFLOW				SP_ERROR_START + 9
#define SP_ERROR_INVALID_COMMAND		SP_ERROR_START + 10

#define SP_ERROR_FILE_WRITEERROR		SP_ERROR_START + 11
#define SP_ERROR_FILE_OPENERROR			SP_ERROR_START + 12

// 用于CNGP_LOGIN_BODY的cLoginMode
#define LOGINMODE_SUBMIT		0	// 发送短消息
#define LOGINMODE_DELIVER		1	// 接收短消息
#define LOGINMODE_BOTH			2	// 收发短消息

#define LOGINMODE_RESERVED			
#define MSG_FORMAT_ASCII		0	// ASCII字符串
#define MSG_FORMAT_WRITE_CARD	3	// 保留
#define MSG_FORMAT_BINARY		4	// 二进制编码
#define MSG_FORMAT_UCS2			8	// UCS2编码
#define MSG_FORMAT_GB			15	// GBK编码

//
//	消息ID定义
//
#define	CNGP_LOGIN				0x1
#define CNGP_LOGIN_RESP			0x80000001
#define CNGP_SUBMIT				0x2
#define CNGP_SUBMIT_RESP		0x80000002
#define CNGP_DELIVER			0x3
#define CNGP_DELIVER_RESP		0x80000003
#define CNGP_ACTIVE_TEST		0x4
#define CNGP_ACTIVE_TEST_RESP	0x80000004

#define CNGP_EXIT				0x6
#define CNGP_EXIT_RESP			0x80000006

#pragma pack(1)

//
//	消息头
//
typedef struct tagCNGP_HEAD {
	unsigned int	nTotalLength;
	unsigned int	nCommandId;
	unsigned int	nCommandStatus;
	unsigned int	nSequenceId;
} CNGP_HEAD;

typedef struct tagCNGP_LOGIN_BODY {
	char	sClientID[10];		// 此处为SPID,即SP的企业代码
	char	sAuthenticatorClient[16];	// 客户端密码用于鉴别客户端的接入请求。
	unsigned char cLoginMode;	// 登录类型:0、发送短消息,1 接收短消息 2、收发短消息
	unsigned int  nTimeStamp;	// 时间戳的明文,由客户端产生,格式为mmddhhmmss,即月日时分秒,10位数字的整型,右对齐 
	unsigned char cVersion;		// 客户端支持的版本号(高位4bit表示主版本号,低位4bit表示次版本号)
} CNGP_LOGIN_BODY;

typedef struct tagCNGP_LOGIN_RESP_BODY {
	char	sAuthenticatorServer[16];	// 服务器端认证码,当客户端认证出错时,此项为空
    unsigned char cVersion;		// 服务器支持的最高版本号
} CNGP_LOGIN_RESP_BODY;

typedef struct tagTLV {
	unsigned short  wTag;		// 0x0100:协议标识 0x0428:拥塞状态
	unsigned short wLength;		// Value实际长度
	unsigned char  cValue;		// 对于wTag为0x0100,则为协议标识,否则定义为:0:空闲 1-29:低负荷 30-49:中负荷 50-79:高负荷 80-90:最合适的负荷 90-99:接近拥塞 100:拥塞
} TLV;

typedef struct tagCNGP_DELIVER_BODY {
	char sMsgID[10];			// SMGW产生的短消息流水号,由三部分组成:SMGW代码:3字节(BCD码)时间:4字节(BCD码)序列号:3字节(BCD码)
	unsigned char cIsReport;	// 是否为状态报告
	unsigned char cMsgFormat;	// 短消息格式
	char sRecvTime[14];			// 短消息接收时间(格式:yyyymmddhhmmss,例如20010301200000)
	char sSrcTermID[21];		// 短消息发送用户号码
	char sDestTermID[21];		// 短消息接收用户号码
	unsigned char cMsgLength;	// 短消息长度
	char sMsgContent[254];		// 短消息内容
	TLV tlvProtocolID ;			// 协议标识(参见TLV说明)
} CNGP_DELIVER_BODY;

typedef struct tagCNGP_DELIVER_RESP_BODY {
	char sMsgID[10];			// SMGW产生的短消息流水号,由三部分组成:SMGW代码:3字节(BCD码)时间:4字节(BCD码)序列号:3字节(BCD码)
	TLV	tlvCongestionState;		// 流量控制(参见TLV说明)
} CNGP_DELIVER_RESP_BODY;

typedef struct tagCNGP_SUBMIT_BODY {
	char sSPID[10];				// SP的企业代码
	unsigned char cSubType;		// 短消息子类型(0=取消订阅,1=订阅或点播请求,2=点播下发,3=订阅下发,其他保留)
	unsigned char cNeedReport;	// 是否要求返回状态报告:(0=不要求,1=要求)
	unsigned char cPriority;	// 发送优先级(从0到3)3为最高级
	char sServiceID[10];		// 业务类型
	char sFeeType[2];			// 资费类型00=免费01=按条收费02=包月03=封顶04=包月扣费请求05=CR话单     其他:保留
	unsigned char cFeeUserType; // 计费用户类型字段0:对目的终端计费1:对源终端计费2:对SP计费3:按照计费用户号码计费其他保留
	char sFeeCode[6];			// 每条短消息的信息费,单位:分
	unsigned char cMsgFormat;	// 短消息格式(参见短消息格式代码表7.1)
	char sValidTime[17];		// 有效时间,(格式:yyyymmddhhmmss)
	char sAtTime[17];			// 定时发送时间,(格式:yyyymmddhhmmss)
	char sSrcTermID[21];			// 短消息发送用户号码
	char sChargeTermID[21];		// 计费用户号码
	unsigned char cDestTermIDCount; // 短消息接收号码总数(≤100)
	char sDestTermID[21];		// 短消息接收用户号码
	unsigned char cMsgLength;	// 短消息长度
	char sMsgContent[254];		// 短消息内容
	TLV	ProtocolID;				// 协议标识(参见TLV说明表7.5)
} CNGP_SUBMIT_BODY;

typedef struct tagCNGP_SUBMIT_RESP_BODY {
	char sMsgID[10];			// SMGW产生的短消息流水号,由三部分组成:SMGW代码:3字节(BCD码)时间:4字节(BCD码)序列号:3字节(BCD码)
	TLV	tlvCongestionState;		// 流量控制(参见TLV说明)
} CNGP_SUBMIT_RESP_BODY;

#define MAX_SM_LEN	160

typedef struct tagDELIVERRESP {
	unsigned short uSize;
	char	sMsgID[21+1];
	int		nMsgLevel;
	char	sServiceID[10+1];
	int		nMsgFormat;
	char	sSrcTermID[21+1];
	int		nIsReply;	/* 0/1 */
	int		nMsgLen;
	char	sMsgContent[MAX_SM_LEN+1];
	char	sDestTermID[21+1];
	char	cTpPid;
	char	cTpUdhi;
} DELIVERRESP, * PDELIVERRESP, FAR *LPDELIVERRESP;

int _CNGPSubmit(
      LPCTSTR sSPID,				// SP的企业代码
      unsigned char bySubType,		// 短消息子类型(0=取消订阅,1=订阅或点播请求,2=点播下发,3=订阅下发,其他保留)
      unsigned char byNeedReport,	// 是否要求返回状态报告:(0=不要求,1=要求)
      unsigned char byPriority,		// 发送优先级(从0到3)3为最高级
      LPCTSTR       sService,		// 业务类型
      LPCTSTR       sFeeType,		// 资费类型:00=免费 01=按条收费 02=包月 03=封顶 04=包月扣费请求 05=CR话单 其他:保留
      unsigned char byFeeUserType,	// 计费用户类型字段0:对目的终端计费1:对源终端计费2:对SP计费3:按照计费用户号码计费其他保留
      LPCTSTR       sFeeCode,		// 每条短消息的信息费,单位:分
      unsigned char byMsgFormat,	// 短消息格式(参见短消息格式代码表7.1)
      LPCTSTR       sValidTime,		// 有效时间,(格式:yyyymmddhhmmss)
      LPCTSTR       sAtTime,		// 定时发送时间,(格式:yyyymmddhhmmss)
      LPCTSTR       sOrgAddr,		// 短消息发送用户号码
      LPCTSTR       sChargeAddr,	// 计费用户号码
      unsigned char byUserNum,		// 短消息接收号码总数(≤100)
      LPCTSTR       sDestAddrs,		// 短消息接收号码(连续存储DestTermIDCount个号码)
      unsigned char byMsgLen,		// 短消息长度
      LPCTSTR       sMsgContent,	// 短消息内容
      unsigned char byProValue = 0,	// 协议标识(参见TLV说明表7.5)
      unsigned char* byMsgID = NULL);	// 接收MSID的字段 SMEI的扩展

int _GetCNGPDeliverSM(
        char*          sMsgID,		    	//返回:SMGW产生的短消息流水号,由三部分组成:SMGW代码:3字节(BCD码)时间:4字节(BCD码)序列号:3字节(BCD码)
        unsigned char* byMsgFormat,         //返回:断消息格式
        char*          sRecvTime,           //返回:接收时间
        char*          sOrgAddr,		    //返回:源地址
        char*          sDestAddr,			//返回:目标地址
        unsigned char* byMsgLen,            //返回:消息长度
        char*          sMsgContent,			//返回:消息内容
        unsigned char* byProValue,          //返回:协议标识
        unsigned char* byIsReport,          //返回:状态报告标志
        char*          sSrcMsgID,           //返回:状态报告中原始MsgID
        char*          sSubmitdate,         
        char*          sDonedate,
        char*          sStatus,
        int            iDeliverAckResult);

SOCKET _login(LPCSTR Server, WORD Port, LPCTSTR SystemID,  LPCTSTR Password, int nLoginMode);
int _activetest(SOCKET hSocket);
int _submit(LPCSTR Server, WORD Port, LPCTSTR SystemID,  LPCTSTR Password);
void _logout(SOCKET& hSocket);
int _delivery(SOCKET& hSocket, int nWaitSeconds);

#endif

⌨️ 快捷键说明

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