📄 sgipsock.h
字号:
#if !defined(AFX_NOKIASOCK_H__7BAC9F1D_C0FE_406B_90F9_C32214152010__INCLUDED_)
#define AFX_NOKIASOCK_H__7BAC9F1D_C0FE_406B_90F9_C32214152010__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
//#include "sme.h"
#include "afxsock.h"
//#include "logfile.h"
//extern CLogFile g_log;
//***************************************************************************
//command id
#define SGIP_BIND 0x1
#define SGIP_BIND_RESP 0x01000080//0x80000001
#define SGIP_UNBIND 0x2
#define SGIP_UNBIND_RESP 0x80000002
#define SGIP_SUBMIT 0x3
#define SGIP_SUBMIT_RESP 0x80000003
#define SGIP_DELIVER 0x4
#define SGIP_DELIVER_RESP 0x80000004
#define SGIP_REPORT 0x5
#define SGIP_REPORT_RESP 0x80000005
#define SGIP_ADDSP 0x6
#define SGIP_ADDSP_RESP 0x80000006
#define SGIP_MODIFYSP 0x7
#define SGIP_MODIFYSP_RESP 0x80000007
#define SGIP_DELETESP 0x8
#define SGIP_DELETESP_RESP 0x80000008
#define SGIP_QUERYROUTE 0x9
#define SGIP_QUERYROUTE_RESP 0x80000009
#define SGIP_ADDTELESEG 0xa
#define SGIP_ADDTELESEG_RESP 0x8000000a
#define SGIP_MODIFYTELESEG 0xb
#define SGIP_MODIFYTELESEG_RESP 0x8000000b
#define SGIP_DELETETELESEG 0xc
#define SGIP_DELETETELESEG_RESP 0x8000000c
#define SGIP_ADDSMG 0xd
#define SGIP_ADDSMG_RESP 0x8000000d
#define SGIP_MODIFYSMG 0xe
#define SGIP_MODIFYSMG_RESP 0x0000000e
#define SGIP_DELETESMG 0xf
#define SGIP_DELETESMG_RESP 0x8000000f
#define SGIP_CHECKUSER 0x10
#define SGIP_CHECKUSER_RESP 0x80000010
#define SGIP_USERRPT 0x11
#define SGIP_USERRPT_RESP 0x80000011
#define SGIP_TRACE 0x1000
#define SGIP_TRACE_RESP 0x80001000
//****************************************************************************
#define MAX_ERRTEXT 600
#define MAX_SMPP_COM_BUF 1000
#define MAX_SGIP_RSP_BUF_LEN 21
//#define MAX_HOSTNAME 16 //平台主机名最大长度
#define MAX_SGIP_MSGLEN 280 //所发短信最大长度,如为中文,应为160/4=40
#define MAX_SGIP_LOGINTIME 3 //登录最大超时时间()
#define MAX_SGIP_LOGOUTTIME 2 //退出最大超时时间
#define MAX_SGIP_SUBTIME 3 //发送短信最大超时时间
#define MAX_SGIP_ALIVETESTTIME 1 //活动测试最大超时时间
#define CMD_LINEOUT 0X3102288
#pragma pack(1)
struct SGIP_MESSAGE_HEAD
{
DWORD command_length ; //消息包的长度,包括此字段
DWORD command_id ; //表明此条短消息的类型
DWORD SP ;
DWORD itime ;
DWORD no ;
};
//#define SGIP_PRINTOUT //printf
inline void SGIP_PRINTOUT(const char* STR)
{
/* char STRA[400],timeChar[30];time_t dt;time(&dt); memset(timeChar,0,30);
strftime(timeChar,30,"%Y-%m-%d %H:%M:%S",localtime((const long*)&dt));
sprintf(STRA,"%s--->%s",timeChar,STR);
CWnd *pWnd =AfxGetMainWnd();
if(pWnd)
pWnd->SendMessage(WM_COMMAND,(WPARAM)CMD_LINEOUT,(LPARAM)STRA);
g_log.LogtoFile((char*)STRA);
*/
TRACE("%s\n",STR);
}
//#define SGIP_PRINTOUT TRACE
class CSGIPSock : public CSmsSock
{
private:
int m_sequence; //消息序列号
//int m_defaultPeroid; //缺省的超时值
struct tagSMSCInfo
{
char SMSCIP[16];
UINT uPort;
char usrName[50];
char passWd[50];
}m_smscInfo;
public:
HANDLE m_hEventMainOver;
public:
CSGIPSock();
virtual ~CSGIPSock();
public:
void savebuffertofile(const char * buf);
int GetRespState(int state, char *pcresp);
void OnClose();
void ClearBuffer();
void SetUser(char *puser,char *pwd);
void SetPort(int port);
void SetHostName(char *phost);
int fDisconnect();
int fConnect(char* host,unsigned int port);
int fAliveTst();
int fLogout(bool bResp=FALSE);
int fLogin(char* usrname,char* passwd);
int fLogin1(char* usrname,char* passwd);
int fSendSM( char* destadd, char* srcadd,const char* sendmsg,bool bResp=FALSE);
int fSendSM1( char* destadd, char* srcadd,const char* sendmsg,bool bResp=FALSE);
int fReceive(BYTE* lpBuf, int nBufLen);
//void fShowErr(int nErrcode);
//{{AFX_VIRTUAL(CSGIPSock)
//}}AFX_VIRTUAL
//{{AFX_MSG(CSGIPSock)
//}}AFX_MSG
private:
void network_head(struct SGIP_MESSAGE_HEAD* phead);
int fill_message(BYTE* pbody,const char* msg);
inline DWORD network_dword(DWORD v) //转换网络字节序
{
return ((v)<<24) | (((v)&0xff00)<<8) | (((v)>>8)&0xff00) | ((v)>>24);
}
//BOOL fWaitforSend(int nType);
//int fCodeMsg(BYTE* msg,int& nmsgLen);
//void fShowSmeErr(BYTE * lpBuf);
//int fWaitForSingleObject(HANDLE hHandle);
//void fPacknum(void* pBuf);
int CreateSocket();
protected:
void GetSequence(BYTE *pbuf,int *ps);
void AddSequenceNO(char *buf,char *sp,int no);
void ModifyStr(char *buf,char *src,int len);
char * AddStrToBuf(char *buf,char *src,int len);
void AddMsgHeadLength(BYTE *pbuf,int len);
void AddMsgHeadcmdID(BYTE *pbuf,int cmdID);
};
/////////////////////////////////////////////////////////////////////////////
//状态定义Command_status 错误代码 描述
#define E_SUCCESS 0X00000000 //成功
//{{AFX_INSERT_LOCATION}}
#endif // !defined(AFX_NOKIASOCK_H__7BAC9F1D_C0FE_406B_90F9_C32214152010__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -