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

📄 serverthread.h

📁 vc开发的一个cmpp(中国移动点对点通讯)通讯程序
💻 H
字号:
#if !defined(AFX_SERVERTHREAD_H__F2BC4D1E_950F_4A91_9BED_86F9718374A1__INCLUDED_)
#define AFX_SERVERTHREAD_H__F2BC4D1E_950F_4A91_9BED_86F9718374A1__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// ServerThread.h : header file
//


#include "TcpSocket.h"
#include "CmppPdu.h"
//#include "define.h"

/////////////////////////////////////////////////////////////////////////////
// CServerThread thread

typedef struct tagOverFee
{
	int	iFeeType;			//错误指令计费类别=2
	int iMotomtFlag;		//错误指令MOTOMTFLAG=0
	int iFeeValue;			//错误指令信息费=10
	int	iGivenValue;		//错误指令赠话费=0
	CString	strServiceType;	//错误指令业务代码
}OVERFEE,*POVERFEE;

typedef struct tagFiltrateMessage
{
	CString strFilMsg;    //过滤内容
	CString strFeedBack;  //过滤反馈
	BOOL    bFeedBack;    //是否反馈
}FiltrateMsg;

class CServerThread : public CWinThread
{
	DECLARE_DYNCREATE(CServerThread)
public:
	CServerThread();           // protected constructor used by dynamic creation

// Attributes
public:

// Operations
public:
	CCmppPdu		m_stPdu;						//

	CTcpAsyncSocket m_stMoniterSocket;
	char			m_szDSN[101];
	int				m_nMaxIdleTimes;
	CDatabase		m_database;						//
	int				m_nSourceNode;					//源节点代码
	char			m_szSPNumber[21];				//特服号
	char			m_szCorpId[21];					//企业代码
	int				m_nWaitAnsTimes;				//
	int				m_nReConnectTimes;				//
	int				m_nMaxRetryTimes;				//最大重发次数
	char			m_szUserName[21];				//
	char			m_szPassword[21];				//
	char			m_szTableName[50];				//
	char			m_szSubmitLogTableName[101];	//
	BOOL			m_bSubmitLogToEveryDayTable;	//
	int				m_nMoniterPort;					//监控端口
	char			m_szActiveFlag[50];				//程序活动文件名
	BOOL			bLongMessageFree;				//超长段消息是否免费
	int				m_nContinueSendCount;			//自定义发送人,用于聊天类节目
	int				m_nExpireSpan ;                 //短信息有效期限(秒)
	BOOL			m_bCustomSpNumber;			

	CArray <CTcpAsyncSocket*,CTcpAsyncSocket*>		m_stMoniterNodeBuf;
	int				m_nTotalServer;
	int				m_nQuerRecordTimes;
	int				m_nContinueSendTimes;
	int				iMobileTypeNum;

	OVERFEE          m_overfee,m_tplsfee,m_freefee;
	int              m_nIndex;
	int              m_nPriority;  //发送优先级

	int          m_nFiltrateNum;
	BOOL         m_bFiltrate;
	int          m_nFilType;
	FiltrateMsg  *m_sFiltrateMsg; 
	CString      *m_pstrFreeUser;
	int          m_nFreeUserNum;
	BOOL         m_bFreeUser;
	BOOL	m_bConnectToDB;
	bool       ACTIVE_FLAG;
	int    SHORT_MESSAGE_SPLIT_LENGTH;
	bool g_bServerThreadExit;
	int    m_nRptMsgFlag;
// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CServerThread)
	public:
	virtual BOOL InitInstance();
	virtual int ExitInstance();
	virtual int Run();
	//}}AFX_VIRTUAL

// Implementation
public:
	int SendCmppConnect(SServerNodeBuffer *pstNode);
	BOOL SendCmppActiveTest(SServerNodeBuffer *pstNode);
	BOOL ConnectServer(SServerNodeBuffer *pstNode);
	void HandleActiveTest();
	void ProcessIdle();
	void ResendMessage(int nTaskID);
	void HandleTask();
	void AddToTaskList(SServerNodeBuffer *pstServerNodeBuf,unsigned char* szBuf,int nLen,int nSequence);
	int SendCmppTerminate(SServerNodeBuffer *pstNode);
	void AddToMoniterList(CTcpAsyncSocket* pstClientSocket);
	CString GetLeftTChar(CString strSrc, int iWordsNum, int iStartPos, int &iDestStrLength);
	int GetWorsNumOfStr(CString strMsg);
	int SendPacket(CTcpAsyncSocket *pstSocket, unsigned char *szSendBuf, int nSendLen);
	int SendMessage(CString strMobile,CString strTempMessage,CString strChargeNumber,CString  strSender,CString strServiceType,CString strLinkID,char cFeeType,CString strFeeValue,CString strGivenValue,const char* szScheduleTime,char cMessageCoding,int nMOtoMTFlag,int iStatusRpt,int mobiletype,int feenumtype);
	BOOL AnalyseMessage(CString *strSrc, CString *strDest);
	BOOL AnalyseMessage(CString &strSrc,CString &strDest,CString strDivision);
	BOOL SubmitToDatabase(const char *szSql);
	void SubmitToSendFilLog(const char *szMsg,const char *szMobile,const char *szSender,const char *szFeeNum, const char * szServiceType,int cFeeType,const char * szFeeValue,const char * szGivenValue,int nMotoMtFlag);
	void WriteActiveFlag();
	int GetMinUnHandleServerIndex();
	BOOL InitSocket();
	void Quit();
	void LogMsg(const char* szMsg);
	void LoadFreeUser();
	void LoadFiltrateMsg();
	BOOL IsFiltrateMsg(CString strMessage,CString &strReBack,BOOL &bFeedBack);
	BOOL IsFreeUser(CString strMobile);
	void QueryRecord();
	BOOL ConnectDB();
	void LoadIni();
	int		SendShortMessage(const char* szUserNumber,const char* szMessageContent,const char* szChargeNumber,
							const char* szSender,const char* szServiceType,const char *szLinkID,char cFeeType,const char *szFeeValue,const char* szGivenValue,
							const char* szScheduleTime,char cMessageCoding,char cMOrelatetoMTFlag,int iStatusRpt=0,int iPriority=0,int iMsgType=0,int iExpireTimeSpan=28800,int mobiletype=0,int feenumtype=0);
	void         SubmitToSendMsgLog(const char *szMsg,const char *szMobile,const char *szSender,const char *szFeeNum,const char * szServiceType,const char * szLinkID,int cFeeType,const char * szFeeValue,const char * szGivenValue,int nMotoMtFlag);
//	void         LogByFeeMsg(int iNumberID,CString strMobile);
	virtual ~CServerThread();

	// Generated message map functions
	//{{AFX_MSG(CServerThread)
		// NOTE - the ClassWizard will add and remove member functions here.
	//}}AFX_MSG
	
	DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_SERVERTHREAD_H__F2BC4D1E_950F_4A91_9BED_86F9718374A1__INCLUDED_)

⌨️ 快捷键说明

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