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

📄 constants.h

📁 1、自己编写的遵循SGIP1.1的短信网关模拟程序。仅供测试、学习。 2、该程序只实现了SGIP1.1协议的一部分。
💻 H
📖 第 1 页 / 共 2 页
字号:
// Constants.h
#ifndef _SGIPSERVICE_CONSTANTS_H_
#define _SGIPSERVICE_CONSTANTS_H_
#include <afxtempl.h>
/////////////////////////////////////////////////////////////////////////////
//***************************************************************************
//some definitions
#define SMS_SP_EXPIRE_MAXTIME   24//(单位:小时)一条下发短消息的请求能够被SP APP处理的最大时间
#define SMS_WAIT_REPORT_MAXTIME 10//(单位:分钟)一条下发短消息在提交后等待report的最大时间
#define SMS_RESUBMIT_MAXCOUNT   3//THE MAX RESUBMIT COUNT WHEN SUBMIT FAIL OR TIMEOUT 

//////////////////////////////////////////////////////
//for the parsephonenumstr function
#define PPNS_PHONESTR_OK      0
#define PPNS_PHONESTR_EMPTY   -1
#define PPNS_PHONESTR_TOOLONG -2
#define PPNS_PHONESTR_FAIL    -3

/////////////////////////////////////////////////////////////////////
//define some user message
#define WM_USER_PROCMESSAGE		(WM_USER + 1)
#define WM_USER_REQUEST_MSG		(WM_USER + 2)
#define WM_USER_SENDSM			(WM_USER + 3)
#define WM_USER_MSMQERROREVENT	(WM_USER + 4)
#define	WM_UPDATE_DLGDATA       (WM_USER + 5)
#define	WM_USER_REINITSOCKET    (WM_USER + 6)

//define increment service No.
#define IDISNO_AGENT_PLAT   1

#define STRISNO_AGENT_PLAT  "1"
//define down cmd type
#define IDDCMDTYPE_DOWN_SMS     1

#define STRDCMDTYPE_DOWN_SMS    "1"
//define charge type
#define IDCHARGETYPE_DESTPHONE  1
#define IDCHARGETYPE_SP         2
#define IDCHARGETYPE_THIRDPART  3
//define report type
#define IDREPORTTYPE_RETWHENERROR  0//RETURN REPORT WHEN ERROR HAPPEN(THIS TYPE NOT SURPORT NOW)
#define IDREPORTTYPE_RETWHENEVER   1//RETURN REPORT WHENEVER
#define IDREPORTTYPE_NORET         2//NO RETURN
//////////////////////////////////////////////////////////////////
//define the send back value(to increment service platform)
#define IDBACKVALUE_NOTSURPORT_PLAT -1//不受支持的增值服务平台
#define IDBACKVALUE_NOTSURPORT_CMD  -2//不受支持的命令类型

#define STRBACKVALUE_NOTSURPORT_PLAT "-1"//不受支持的增值服务平台
#define STRBACKVALUE_NOTSURPORT_CMD  "-2"//不受支持的命令类型
//define the send back value(to increment service platform) 
//up cmd type
#define IDUPCMDTYPE_DOWNCMD_PROC_RESULT 1//DOWN CMD PROC RESULT
#define IDUPCMDTYPE_DELIVERDATA         2//THE DLIVER DATA
#define IDUPCMDTYPE_SPAPP_STATUS_REPORT 3//THE SP APP STATUS REPORT

//for the cmd type "DCMDTYPE_DOWN_SMS"(down sms)
#define IDBACKVALUE_DSMS_ACCPTED          1//THE SGIP APP HAVE ACCPTED THIS CMD
#define IDBACKVALUE_DSMS_FORTMATERROR     2//THE DOWN SMS CMD'S FORMAT IS NOT OK
#define IDBACKVALUE_DSMS_TIMEOUTREQ       3//已过时的请求,在接此请求时,通过对比请求时间与当前时间,//发现已超时(超过了SP APP定义的SMS_SP_EXPIRE_TIME....)
#define IDBACKVALUE_DSMS_SUBMITRESULT     4//
#define IDBACKVALUE_DSMS_REPORTRESULT     5
#define IDBACKVALUE_DSMS_SPERROR		  6//SP ERROR,如命令在等待SUBMIT结果时连接中断

#define IDBACKVALUE_DSMS_SUBMITOK         1//
#define IDBACKVALUE_DSMS_SUBMITFAIL       2//
#define IDBACKVALUE_DSMS_SUBMITTIMEOUT    3//
#define IDBACKVALUE_DSMS_REPORTOK         1//
#define IDBACKVALUE_DSMS_REPORTWAITSEND   2//
#define IDBACKVALUE_DSMS_REPORTFAIL       3//
#define IDBACKVALUE_DSMS_REPORTTIMEOUT    4//

#define STRBACKVALUE_DSMS_ACCPTED         "1"//THE SGIP APP HAVE ACCPTED THIS CMD
#define STRBACKVALUE_DSMS_FORTMATERROR    "2"//THE DOWN SMS CMD'S FORMAT IS NOT OK
#define STRBACKVALUE_DSMS_TIMEOUTREQ      "3"//在接此请求时,通过对比请求时间与当前时间,//发现已超时(超过了SP APP定义的SMS_SP_EXPIRE_TIME....)
#define STRBACKVALUE_DSMS_SUBMITRESULT    "4"
#define STRBACKVALUE_DSMS_REPORTRESULT    "5"
#define STRBACKVALUE_DSMS_SPERROR		  "6"//SP ERROR,如命令在等待SUBMIT结果时连接中断

#define STRBACKVALUE_DSMS_SUBMITOK         "1"//
#define STRBACKVALUE_DSMS_SUBMITFAIL       "2"//
#define STRBACKVALUE_DSMS_SUBMITTIMEOUT    "3"//
#define STRBACKVALUE_DSMS_REPORTOK         "1"//
#define STRBACKVALUE_DSMS_REPORTWAITSEND   "2"//
#define STRBACKVALUE_DSMS_REPORTFAIL       "3"//
#define STRBACKVALUE_DSMS_REPORTTIMEOUT    "4"//
/////////////////////////////////////////////////////////////
// for the connection resource

#define CR_MAX_SERVER_WAITTIME 1//(分钟)服务器断开前的最大等待时间,
								//当listen接口在onaccept时做该项检查
#define CR_MAX_CLIENT_NUM  20//THE MAX NUM OF THE CLIENT CONNECTION TO SGIP
#define CR_MAX_SERVER_NUM  20//THE MAX NUM OF THE SERVER SERVE FOR THE SGIP

#define CR_MAX_TIME_BETWEEN_SUB_RESP 30000//THE MAX TIME BETWEEN SUBMIT AND RESPON IS 30s
#define CR_MAX_CONNECTION_FREETIME   60000//THE MAX FREE TIME FOR ONE CONNECTION IS 60s( if larger,will close the connection)

#define CR_MAX_WAITRESPCMD_NUM       320//THE MAX NUM OF COMMAND WAITING RESPONSE(JUST IN ONE CONNECTION)

////////////////////////////////////////////////////////////////////
//for fee log
#define IDFEELOG_TYPE_SUBMIT         1//
#define IDFEELOG_TYPE_REPORT         2//
#define IDFEELOG_TYPE_DELIVER        3//

#define IDFEELOG_STATUS_SUBMITOK       1
#define IDFEELOG_STATUS_REPORTOK       0
#define IDFEELOG_STATUS_REPORTWAITSEND 1
#define IDFEELOG_STATUS_REPORTFAIL     2

////////////////////////////////////////////////////////////////////
// for some buffers
//等待SUBMIT RESP的最大数目:每连接最大等待数*最大连接数
#define BF_MAX_NUM_WAIT_SUBRESP      CR_MAX_WAITRESPCMD_NUM*CR_MAX_CLIENT_NUM
//下行发送短消息指令缓冲区最大数值:
 //由于要等待REPORT,而REPORT返回的时间是不确定的,
 //所以该命令缓冲区就要开得大一些
#define BF_MAX_NUM_DOWNSMS_BUFFER    500*32*5//BF_MAX_NUM_WAIT_SUBRESP
#define BF_MAX_NUM_UP_DATA           200
#define BF_MAX_NUM_STATUS            500

//DOWN cmd proc status			  						
#define DCP_STATUS_OTHERERROR    -2// = -2 其他各种错误(如非连接正常关闭等)
#define DCP_STATUS_FREE          -1// = -1 空闲
#define DCP_STATUS_WAITSEND       0// = 0  等待处理(发送)
#define DCP_STATUS_WAITRESULT     1// = 1  正在等待结果(以下列举的)
#define DCP_STATUS_SUBMITFAIL     2// = 2	提交失败(submit)
#define DCP_STATUS_SUBMITOK       3// = 3	提交成功
#define DCP_STATUS_SUBMITTIMEOUT  4// = 4  提交超时
#define DCP_STATUS_SENDFAIL       5// = 5  发送失败(report)
#define DCP_STATUS_SENDOK         6// = 6	发送成功
#define DCP_STATUS_SENDTIMEOUT    7// = 7  发送超时
//channel submit status		
#define CSUB_STATUS_NOSUBMIT       0//0:not submit
#define CSUB_STATUS_SUBMITOK       1//1:submit ok
#define CSUB_STATUS_SUBMITFAIL     -1//-1:submit fail
#define CSUB_STATUS_SUBMITTIMEOUT  -2//-2:submit timeout(submit线程使用:好象都没什么用??)
#define CSUB_STATUS_CONCLOSE       -3//-3:连接已被关闭??

#define CDEL_STATUS_NODELIVER       0//0:not deliver
#define CDEL_STATUS_DELIVEROK       1//1:deliver ok
#define CDEL_STATUS_DELIVERFAIL     -1//-1:deliver fail
#define CDEL_STATUS_DELIVERTIMEOUT  -2//-2:deliver timeout(deliver线程使用:好象都没什么用??)
#define CDEL_STATUS_CONCLOSE       -3//-3:连接已被关闭??

///////////////////////////////////////////////////////////
//定义注册表信息

#define SUBKEY		"Software\\JAMD3.0\\Sgip Service System version 1.5"

//数据源参数
const char RegKey_DSN[] = "DSN";
const char RegKey_ServerName[] = "DB Server Name";
const char RegKey_DatabaseName[] = "Database Name";
const char RegKey_UserName[] = "User Name";
const char RegKey_Password[] = "Password";

const char RegVal_DSN[] = "SgipJamd15";
const char RegVal_ServerName[] = "db_server01";
const char RegVal_DatabaseName[] = "SgipJamd15";
const char RegVal_UserName[] = "sa";
const char RegVal_Password[] = "";
//系统通讯队列参数
const char RegKey_PSCName[] = "PSC Name";
const char RegKey_SendQueue[] = "Send Queue";
const char RegKey_RecvQueue[] = "Receive Queue";
const char RegKey_ErrorQueue[] = "Error Queue";

const char RegVal_PSCName[] = "db_server01";
const char RegVal_SendQueue[] = "Qprocess";
const char RegVal_RecvQueue[] = "QRequest";
const char RegVal_ErrorQueue[] = "QRunState";
//连接深圳短信中心参数
const char RegKey_SGIPServerIP[] = "SGIP Server IP";
const char RegKey_SGIPServerPort[] = "SGIP Server Port";
const char RegKey_ListenPort[] = "Local Listen Port";
const char RegKey_LoginName[] = "Login Name";
const char RegKey_LoginPassword[] = "Login Password";
const char RegKey_SourceID[] = "SP Source ID";
const char RegKey_SPNumber[] = "SP Number";
const char RegKey_CorpID[] = "Corp ID";
const char RegKey_ChargeNumber[] = "Charge Number";

const char RegVal_SGIPServerIP[] = "211.96.96.211";
const char RegVal_SGIPServerPort[] = "8881";
const char RegVal_ListenPort[] = "8801";
const char RegVal_LoginName[] = "jingan";
const char RegVal_LoginPassword[] = "jingan";
const char RegVal_SourceID[] = "330012";
const char RegVal_SPNumber[] = "449";
const char RegVal_CorpID[] = "30012";
const char RegVal_ChargeNumber[] = "13005777777";

const char RegKey_AutoStart[] = "Auto Start";

const char RegVal_AutoStart[] = "0";
// Init values for the constants
#define VALUEAUTOSTART	0

//////////////////////////////////////////////////////////////////////
//for sgip

//SGIP Protocol command set
const int SGIP_bind			=	0x00000001;
const int SGIP_bind_resp	=	0x80000001;
const int SGIP_unbind		=	0x00000002;
const int SGIP_unbind_resp	=	0x80000002;
const int SGIP_submit_sm	=	0x00000003;
const int SGIP_submit_sm_resp=	0x80000003;
const int SGIP_deliver_sm	=	0x00000004;
const int SGIP_deliver_sm_resp=	0x80000004;
const int SGIP_report		=	0x00000005;
const int SGIP_report_resp	=	0x80000005;
const int SGIP_Trace		=	0x00001000;
const int SGIP_Trace_resp	=	0x80001000;

//SGIP Message coding 
const BYTE MsgCode_ASCII	= 0;
const BYTE MsgCode_WriteSIM	= 3;
const BYTE MsgCode_Binary	= 4;
const BYTE MsgCode_UCS2		= 8;
const BYTE MsgCode_GBK		= 15;


//the followings are used by db operation
#define VALUEDBALLTHREAD        0//ALL THREAD
#define VALUEDBUSERINTERFACE    1//User Interface
#define VALUEDBGDCTHREAD		2//GET DOWN CMD Thread
#define VALUEDBMBTHREAD         3//MONITOR BUF THREAD


#define SUCCESS_OPEN_DB					    1
#define TXT_SUCCESS_OPEN_DB				    "连接数据库成功"

#define ERR_OPEN_DB					-1
#define TXT_ERR_OPEN_DB				"打开数据库失败,系统将停止运行"

////////////////////////////////////////////////////////////////////
//*****************************************************************
//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;
	////////////////////////
	//CString	strFeePhoneNo;
	//callback function pointers

	int (*OnSMSSubmit)(unsigned long ulTimeID, 
		               unsigned long ulSgipSerial,
					   CString strSpNumber,
					   BYTE UserCount,
					   CString strUserNumber,
					   CString strCorpID,
					   CString strServiceType,
					   BYTE FeeType,
					   CString strFeeValue,
					   CString strGivenValue,

⌨️ 快捷键说明

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