📄 server.h
字号:
#if !defined(AFX_ISMGSERVER_H__E51A25DD_7414_45C7_AC68_FF1882AC70AB__INCLUDED_)
#define AFX_ISMGSERVER_H__E51A25DD_7414_45C7_AC68_FF1882AC70AB__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// ISMGServer.h : header file
//
#include "Tcpsocket.h"
#include "SGipPdu.h"
typedef struct tagNodeBuffer
{
CTcpAsyncSocket m_stSocket;
char m_szServerIP[101];
int m_nServerPort;
char m_szUser[21];
char m_szPassword[21];
char m_szLocalIP[20];
unsigned long m_nUnHandleNumber;
BOOL m_bConnected;
time_t m_tConnectServerTime;
time_t m_tServerActiveTime;
}SServerNodeBuffer;
typedef struct {
int m_nTaskId;
SServerNodeBuffer *m_pstServerNode;
BYTE m_bState;
int m_bMsgType;
time_t m_cTimer;
BYTE m_nResendTimes;
int m_iSequenceNumber1; //序列号
int m_iSequenceNumber2; //序列号
int m_iSequenceNumber3; //序列号
CByteArray m_baPduBuf;
}SESSION_ITEM;
//图片格式
typedef struct tagPID
{
int iTP_pid;
int iTP_udhi;
CString strMobileType;
}PICTURETYPE,*PPICTURETYPE;
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;
/////////////////////////////////////////////////////////////////////////////
// CServerThread thread
class CServerThread : public CWinThread
{
DECLARE_DYNCREATE(CServerThread)
public:
CServerThread(); //
virtual ~CServerThread();
void LogMsg(const char* szMsg);
BOOL InitSocket();
void LoadIni();
void AddToMoniterList(CTcpAsyncSocket* pstClientSocket);
int SendPacket(CTcpAsyncSocket *pstSocket,unsigned char* szSendBuf,int nSendLen);
BOOL ConnectDB();
int SeekTask(int nSequence1,int nSequence2,int nSequence3);
void ProcessIdle();
BOOL ConnectServer(SServerNodeBuffer *pstNode);
int SendSGipUnBind(SServerNodeBuffer *pstNode);
int SendSGipBind(SServerNodeBuffer *pstNode);
int SendSGipUnBindResp(SServerNodeBuffer *pstNode,const char* szRecvBuf);
void HandleTask();
void ResendMessage(int nTaskID);
BOOL CleanUnConnectSocket(CTcpAsyncSocket *pstSocket);
void HandleServerMsg(SServerNodeBuffer *pstNode,char *szRecvBuf,int nLen);
void Quit();
void QueryRecord();
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);
// add by ycf 20020825
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=0);
int GetMinUnHandleServerIndex();
BOOL IsConnected();
BOOL IsAllConnected();
void AddToTaskList(SServerNodeBuffer *pstServerNodeBuf,unsigned char* szBuf,int nLen,int nSequence1,int nSequence2,int nSequence3,int nMsgType=0);
void HandleActiveTest();
void ProcessReceivePdu();
void WriteSubmitLog(int nTaskID,char cResult);
BOOL IncludeChinese(CString strMsg);
void WriteActiveFlag();
// add by ycf 0512
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 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 LoadFiltrateMsg();
void LoadFreeUser();
BOOL IsFiltrateMsg(CString strMessage,CString &strReBack,BOOL &bFeedBack);
BOOL IsFreeUser(CString strMobile);
int m_nFiltrateNum;
BOOL m_bFiltrate;
int m_nFilType;
FiltrateMsg *m_sFiltrateMsg;
CString *m_pstrFreeUser;
int m_nFreeUserNum;
BOOL m_bFreeUser;
// Attributes
public:
CTcpAsyncSocket m_stMoniterSocket; //
CDatabase m_database; //
CSGipPdu m_stPdu; //
int m_nSourceNode; //源节点代码
char m_szSPNumber[21]; //特服号
char m_szCorpId[21]; //企业代码
int m_nWaitAnsTimes; //
int m_nReConnectTimes; //
int m_nMaxIdleTimes; //最大空闲时间
int m_nMaxRetryTimes; //最大重发次数
char m_szUserName[21]; //
char m_szPassword[21]; //
char m_szDSN[101]; //
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;
CArray <SServerNodeBuffer*,SServerNodeBuffer*> m_stServerNodeBuf;
SESSION_ITEM m_stTask[MAX_TASK_SIZE];
int m_nTaskHead;
int m_nTaskTail;
int m_nTotalServer;
int m_nQuerRecordTimes;
int m_nContinueSendTimes;
PPICTURETYPE pPictureType;
int iMobileTypeNum;
//add by ycf 20020825
OVERFEE m_overfee,m_tplsfee,m_freefee;
int m_nIndex;
int m_nPriority; //发送优先级
// Operations
public:
BOOL SubmitToDatabase(const char* szSql);
void SendOnePicture(const char *szUserNumber, const char *szChargeNumber,const char *szSender, const char * szFileName, const char *szServiceType,const char *szLinkID, char cFeeType, const char *szFeeValue, const char *szGivenValue, char cMOrelatetoMTFlag,int iMobileType,int &iCount, int iStatusRpt=0,int iPriority=0);
BOOL IsDigital(char cSrc);
int GetWorsNumOfStr(CString strMsg);
CString GetLeftTChar(CString strSrc, int iWordsNum, int iStartPos, int &iDestStrLength);
BOOL AnalyseMessage(CString *strSrc, CString *strDest);
BOOL m_bConnectToDB;
// add by ycf 20020825
BOOL AnalyseMessage(CString &strSrc,CString &strDest,CString strDivision);
BOOL AnalyseMessage(CString strMessage,CString strTmp);
int AnsiToEncode(char *pSrcCode, int nLen,CString &strDestCode);
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CServerThread)
public:
virtual BOOL InitInstance();
virtual int ExitInstance();
virtual int Run();
//}}AFX_VIRTUAL
// Implementation
protected:
// 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_ISMGSERVER_H__E51A25DD_7414_45C7_AC68_FF1882AC70AB__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -