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

📄 func.h

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

#define SMPPMAXLENGTH 512
#define nCMPP_VERSION          0x30			//	CMPP3.0
#define nCMPP_WINDOW_SIZE		 16			//	CMPP滑动窗口的大小
#define nCMPP_PKG_SIZE		 400			//	CMPP数据包的最大长度

#define nCMPP_CONNECT          0x00000001	//	请求连接
#define nCMPP_CONNECT_RESP     0x80000001	//	请求连接应答
#define nCMPP_TERMINATE        0x00000002	//	终止连接
#define nCMPP_TERMINATE_RESP   0x80000002	//	终止连接应答
#define nCMPP_SUBMIT           0x00000004	//	提交短信
#define nCMPP_SUBMIT_RESP      0x80000004	//	提交短信应答
#define nCMPP_DELIVER          0x00000005	//	短信下发
#define nCMPP_DELIVER_RESP     0x80000005	//	下发短信应答
#define nCMPP_QUERY            0x00000006	//	短信状态查询
#define nCMPP_QUERY_RESP       0x80000006	//	短信状态查询应答
#define nCMPP_CANCEL           0x00000007	//	删除短信
#define nCMPP_CANCEL_RESP      0x80000007	//	删除短信应答
#define nCMPP_ACTIVE_TEST      0x00000008	//	激活测试
#define nCMPP_ACTIVE_TEST_RESP 0x80000008	//	激活测试应答



//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 10008
#define ExitFromDeliver 9
#define ExitFromReceiver 10
#define ExitFromDBERROR 2000
#define ISQL 1

#define ONESECTION1 1//socket send section
#define ONESECTION2 1//socket recv section
#define ONESECTION3 1//winlen access
#define MOBILELEN 20
#define MSGLEN 320
#define MSGLENP1 321
#define TESTSMSC 0
#define BADGW 1
#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();
	CArg(){dwStopFlag=0;};
	_ConnectionPtr pCnnGSM;
	DWORD dwSend,dwRecv,dwStopFlag;
	BYTE isActive;
	HANDLE hGW;
	_bstr_t strCnn;
	char	szLogDir[255];
	int iChannelNum,dwSequence2,dwSequence;
	char	SPNumber[21];
	char	SPID[7];
	char	Password[16];

	char	SMSCIP[20];//=10.0.0.170
	short	SMSCPORT;//=9971
	short	nMaxInterval;
	int isDebug,isMO;
	int nLost,WINLEN;
	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 12 bytes:length,cmd_id,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();
void GetTime(char* buffer,int period);


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

void	PutByteString(char* dest,char* source,int length);
long	Jstrcpy(char* dest,const char* source);
long	Jstrncpy(char* dest,const char* source,long size);
int		Jstrchr(const char*,char);  
bool	GetArg(CArg*);
DWORD SendData(CMSG *msg,_ConnectionPtr pCnnGSM);
DWORD	WINAPI MTThread(LPVOID);
DWORD	WINAPI MOThread(LPVOID pp);
int TranState(char*);
//int TranState(int);
void GetLastday(char* buffer);
void AddBinLog(char*,int,int flag);
GW_API DWORD BeginGW(LPVOID);
#define ISLOGRESP 1
void AddResp(char* filename,BYTE isHour,const char* format,...);
int SendBuffer(char* buffer,int buf_len);
int RecvBuffer(char* buffer);
void stow(char* msgid,DWORD* id_time,DWORD* id_sn);
void wtos(char* msgid,DWORD id_time,DWORD id_sn);
DWORD SendOnlyData(CMSG *msg);
int RecvBuffer(char* buffer,int len);
void SetWindow(int i);
#endif

⌨️ 快捷键说明

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