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

📄 constants.h

📁 1、自己编写的遵循SGIP1.1协议的短信客户端程序。仅供测试、学习。 2、该程序只实现了SGIP1.1协议的一部分。
💻 H
📖 第 1 页 / 共 2 页
字号:

////////////////////////////////////////////////////////////////////
//*****************************************************************
//struct
typedef struct 
{
	unsigned long ulSourceID;
	unsigned long ulTime;
	unsigned long ulCycle;
} SequenceNo;

////////////////////////////////////////////////////////////////////
//the following structs define the sgip msg
//for init the interface
struct t_INIT_DEF
{
	//local configs
	int		iLocalLisPort;
	CString	strLocalPwd;
	CString	strLocalUserName;
	//server configs
	long	iCorpID;
	CString	strServerIP;
	CString	strServerPwd;
	int		iServerLisPort;
	CString	strServerUserName;
	long	lSourceID;
	int	iSPNumber;
	////////////////////////
	//callback function pointers
	/*int (*OnSMSSubmitResp)(unsigned long ulTimeID, 
		                    unsigned long ulSgipSerial,
							int iSubmitResult);*/
	int (*OnSMSDeliver)(unsigned long ulSgipSerial,
		                 unsigned long ulTimeID,
						 CString strGSMNo,
						 CString strDeliverMsg);
	int (*OnSMSReport)(unsigned long ulSgipSerial,
		                unsigned long ulTimeID,
						CString strGSMNo,
						int iState,
					    int iErrorCode);
    public:
	t_INIT_DEF& operator=(const t_INIT_DEF& rv) 
	{
		iLocalLisPort = rv.iLocalLisPort;
		strLocalPwd = rv.strLocalPwd;
		strLocalUserName = rv.strLocalUserName;
		iCorpID = rv.iCorpID;
		strServerIP = rv.strServerIP;
		strServerPwd = rv.strServerPwd;
		iServerLisPort = rv.iServerLisPort;
		strServerUserName = rv.strServerUserName;
		lSourceID = rv.lSourceID;
		iSPNumber = rv.iSPNumber;
		//OnSMSSubmitResp = rv.OnSMSSubmitResp;
		OnSMSDeliver = rv.OnSMSDeliver;
		OnSMSReport = rv.OnSMSReport;
		return *this;
	}
};


// head
typedef struct 
{
	int Command_length;
	int Command_id;
	SequenceNo Sequence_number;
} t_HEAD_DEF;

// bind
typedef struct
{
	BYTE LoginType;
	char LoginName[16];
	char LoginPassword[16];
	char Reserve[8];
} t_BIND_DEF;

//resp
typedef struct
{
	BYTE Result;
	char Reserve[8];
} t_RESP_DEF;

//submit sm
typedef struct
{
	char SPNumber[21];
	char ChargeNumber[21];
	BYTE UserCount;
	char UserNumber[21];
	char CorpId[5];
	char ServiceType[10];
	BYTE FeeType;
	char FeeValue[6];
	char GivenValue[6];
	BYTE AgentFlag;
	BYTE MorelateoMTFlag;
	BYTE Priority;
	char ExpireTime[16];
	char ScheduleTime[16];
	BYTE ReportFlag;
	BYTE TP_pid;
	BYTE TP_udhi;
	BYTE MessageCoding;
	BYTE MessageType;
	long  MessageLength;
} t_SUBMIT_SM_DEF;

//deliver sm
typedef struct 
{
	char UserNumber[21];
	char SPNumber[21];
	BYTE TP_pid;
	BYTE TP_udhi;
	BYTE MessageCoding;
	char MessageLength[4];
} t_DELIVER_SM_DEF;

//report
typedef struct
{
	SequenceNo SubmitSequenceNumber;
	BYTE ReportType;
	char UserNumber[21];
	BYTE State;
	BYTE ErrorCode;
	char Reserve[8];
} t_REPORT_DEF;

//trace sm
typedef struct
{
	SequenceNo SubmitSequenceNumber;
	char UserNumber[21];
	char Reserve[8];
} t_TRACE_SM_DEF;

//trace sm resp
typedef struct
{
	BYTE Count;
	BYTE Result;
	char NodeId[6];
	char ReceiveTime[16];
	char SendTime[16];
	char Reserve[8];
} t_TRACE_SM_RESP_DEF;

/////////////////////////////////////////////////////////////////////
//for some buffers data


//THE BUFFER DATA OF WAITRESP
//定义作为客户端连接的通道
typedef struct
{
	unsigned long ulSgipSerialNo;//指明该通道被分配给什么序列号的短消息用
	int  iCmdBufNo;//指明占用该通道的命令所在的 Buffer No.
	//当通道被分配时,置1
	//当提交操作有结果时,置0
	int  iStatus;//0:free; 1:being used;
	//当提交结果产生时,then set event.
	HANDLE hSubmit;
	int   iSubmitStatus;//0:not submit 
						//1:submit ok
						//-1:submit fail(包括SP用SEND()发送失败以及SMG返回的失败)
						//-2:submit timeout(submit线程使用:好象都没什么用??)
						//-3:连接已被关闭??
} t_BUFFER_WAITRESP_DEF;


/*struct SMSSubmitResp
{
	unsigned long ulTimeID;
	unsigned long ulSgipSerial;
	int iSubmitResult;
	public:
	SMSSubmitResp& operator=(const SMSSubmitResp& rv) 
	{
		ulTimeID = rv.ulTimeID;
		ulSgipSerial = rv.ulSgipSerial;
		iSubmitResult = rv.iSubmitResult;
		return *this;
	}
};*/

struct SMSDeliver
{
	unsigned long ulSgipSerial;
	unsigned long ulTimeID;
	CString strGSMNo;
	CString strDeliverMsg;
	public:
	SMSDeliver& operator=(const SMSDeliver& rv) 
	{
		ulSgipSerial = rv.ulSgipSerial;
		ulTimeID = rv.ulTimeID;
		strGSMNo = rv.strGSMNo;
		strDeliverMsg = rv.strDeliverMsg;
		return *this;
	}
};

struct SMSReport
{
	unsigned long ulSgipSerial;
	unsigned long ulTimeID;
	CString strGSMNo;
	int iState;
	int iErrorCode;
	public:
	SMSReport& operator=(const SMSReport& rv) 
	{
		ulTimeID = rv.ulTimeID;
		ulSgipSerial = rv.ulSgipSerial;
		strGSMNo = rv.strGSMNo;
		iState = rv.iState;
		iErrorCode = rv.iErrorCode;
		return *this;
	}
};

//typedef CList<SMSSubmitResp,SMSSubmitResp&> CSMSSubmitRespList;
typedef CList<SMSDeliver,SMSDeliver&> CSMSDeliverList;
typedef CList<SMSReport,SMSReport&> CSMSReportList;

////////////////////////////////////////////////////////////////////
//*****************************************************************
//some function

#endif

⌨️ 快捷键说明

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