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

📄 cngp.h

📁 包含了网通 cngp开发的所有文档 其中包括中国网通PHS短消息网关技术规范第二分册.pdf 中国网通PHS短消息网关技术规范V2.0说明.pdf 中国网通PHS短消息网关技术规范第三分册.pdf 中
💻 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 + -