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

📄 func.h

📁 本程序是实现中国移动中国联通的网关程序.代码比较完整.
💻 H
字号:
#if !defined(FUNC_H)
#define FUNC_H
#include <winsock2.h>

#define SMPPMAXLENGTH 1024
#define nSMGP_VERSION          0x13			//	SMGP1.3
#define nSMGP_WINDOW_SIZE		 16			//	SMGP滑动窗口的大小
#define nSMGP_PKG_SIZE		 400			//	SMGP数据包的最大长度

#define nSMGP_CONNECT          0x00000001	//	请求连接
#define nSMGP_CONNECT_RESP     0x80000001	//	请求连接应答
#define nSMGP_TERMINATE        0x00000006	//	终止连接
#define nSMGP_TERMINATE_RESP   0x80000006	//	终止连接应答
#define nSMGP_SUBMIT           0x00000002	//	提交短信
#define nSMGP_SUBMIT_RESP      0x80000002	//	提交短信应答
#define nSMGP_DELIVER          0x00000003	//	短信下发
#define nSMGP_DELIVER_RESP     0x80000003	//	下发短信应答
#define nSMGP_ACTIVE_TEST      0x00000004	//	激活测试
#define nSMGP_ACTIVE_TEST_RESP 0x80000004	//	激活测试应答
#define nSMGP_FORWARD			0x00000005	//SMG转发MT/MO短信请求
#define nSMGP_FORWARD_RESP		0x80000005	//SMG转发MT/MO短信回应



//Exit Code
#define NOERROR 0
#define ExitFromGetCallBack 1
#define ExitFromLinkCallBack 2
#define ExitFromInitDatabase 3
#define ExitFromInit 4
#define ExitFromSender 5   
#define ExitFromWSAStartup 6
#define ExitFromWaitFailed 7
#define ExitFromNetClose 100008
#define ExitFromDeliver 9
#define ExitFromReceiver 10
#define ExitFromDBERROR 2000

#define ONESECTION1 1//socket send section
#define ONESECTION2 1//socket recv section
#define ONESECTION3 1//window leng section
#define MOBILELEN 32
#define MSGLEN 320
#define MSGLENP1 321
#define SPACE '\d'
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "EndOfFile")
inline void TESTHR(HRESULT x) {if FAILED(x) _com_issue_error(x);};
#define COUNT2SEND 250
#define COUNT2CHANGE 30
#define COUNT2SMSC 19

class CArg
{
public:
	CArg(){dwStopFlag=0;};
	~CArg();
	DWORD dwSend,dwRecv,dwStopFlag;
	int dwSequence2,dwSequence;
	BYTE isActive,bWaitTime;
	HANDLE hGW;
	int WINLEN;
	_bstr_t strCnn;
	_ConnectionPtr pCnnGSM;
	int iChannelNum;
	char	SPNumber[21];
	char	szLogDir[255];
	char	SPID[10];
	char	clientID[32];
	char	Password[16];


	char	SMSCIP[20];//=10.0.0.170
	short	SMSCPORT;//=9971
	short	nMaxInterval;
	int isDebug,isMO,nMsgLevel;
	int nLost;
	SOCKET s;
	BYTE nMaxReconnect;
	int iSelectInterval;
#if ONESECTION1
	CRITICAL_SECTION syc1;
#endif
#if ONESECTION2
	CRITICAL_SECTION syc2;
#endif
#if ONESECTION3
	CRITICAL_SECTION syc3;
#endif
};
class CMSG
{
public:
	DWORD dwCommand;
	DWORD dwSequence;
	//the head is 16 bytes:length,cmd_id,state,seq_id

	char SrcTermId[21];
	char DstTermId[21];
	char FeeUser[22];
	char szContent[321];
	char szServiceID[11];
	char ExpireTime[16];
	char ScheduleTime[16];
	DWORD dwResult;
	DWORD dwState;
	int nStation;
	BYTE msg_format,bPID,bUDHI;
	BYTE bPK_TOTAL,bPK_NUM;
	int msg_len;
	char sLinkID[21];
	char FeeType[3];
	char FeeCode[10];
	BYTE bReason,isReply,bFeeUserType;
};

DWORD GetTime();
int InitMsg(char* buffer,CMSG* msg);


void PutNByte(char* buffer,BYTE,DWORD);
DWORD GetNByte(char* buffer,BYTE);

bool	GetArg(CArg*);
DWORD SendData(CMSG *msg,_ConnectionPtr pCnnGSM);
DWORD	WINAPI MTThread(LPVOID);
DWORD	WINAPI MOThread(LPVOID pp);
void AddBinLog(char*,int,int flag);
GW_API DWORD BeginGW(LPVOID);
void AddResp(char* filename,BYTE isHour,const char* format,...);
int SendBuffer(char* buffer,int buf_len);
int SendBuffer(char* buffer);
int RecvBuffer(char* buffer,int len);
int RecvBuffer(char* buffer);
DWORD SendOnlyData(CMSG *msg);
void SetWindow(int i);
int UCS2toGB(char* src,char* dst,int len);
#endif

⌨️ 快捷键说明

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