📄 psgip.h
字号:
// PSgip.h : Declaration of the CPSgip
#ifndef __PSGIP_H_
#define __PSGIP_H_
#include "resource.h" // main symbols
#include "SgipCP.h"
#include <Winsock2.h>
#include "FileRecorder.h"
#include "Queue.h"
#define MAX_TIMEOUT 60000000//us
#define ERROR_NOT 0
#define ERROR_WS_STARTUP_FAIL ERROR_NOT - 1
#define ERROR_WS_INVALID_SOCKET ERROR_NOT - 2
#define ERROR_WS_SET_FAIL ERROR_NOT - 3
#define ERROR_WS_SEND_TIMEOUT ERROR_NOT - 4
#define ERROR_WS_SEND_FAIL ERROR_NOT - 5
#define ERROR_WS_RECV_TIMEOUT ERROR_NOT - 6
#define ERROR_WS_RECV_FAIL ERROR_NOT - 7
#define ERROR_WS_BIND_FAIL ERROR_NOT - 8
#define ERROR_WS_LISTEN_FAIL ERROR_NOT - 9
#define ERROR_WS_UNABLE_RESOLVE ERROR_NOT - 10
#define ERROR_ALREADY_INIT ERROR_NOT + 1
#define ERROR_INIT_FAIL ERROR_NOT + 2
#define ERROR_INVALID_IP_ADDRESS ERROR_NOT + 3
#define ERROR_ALREADY_BIND ERROR_NOT + 4
#define ERROR_BIND_FAIL ERROR_NOT + 5
#define ERROR_SUBMIT_FAIL ERROR_NOT + 6
#define ERROR_BUFFER_FULL ERROR_NOT + 7
#define ERROR_IS_BINDING ERROR_NOT + 8
#define FLAG_BUFFER_VALID 0
#define FLAG_BUFFER_PENDING 1
#define FLAG_BUFFER_READY 2
#define FLAG_BUFFER_SENDED 3
#define FLAG_BUFFER_RETRY 4
#define MAX_BUFFER_SIZE 32
#define MAX_DEST_USR 100
#define MAX_LEN_MOBILE_ID 20
#define MAX_BUFFER_LEN_MOBILE_ID MAX_DEST_USR * (MAX_LEN_MOBILE_ID + 1)
#define MAX_LEN_CONTENT 160 //0:158,o:138
#define MAX_BUFFER_LEN_CONTENT MAX_LEN_CONTENT * MAX_BUFFER_SIZE
#ifndef BZERO
#define BZERO(buf) memset(&(buf), 0, sizeof(buf))
#endif
#define SGIP_PORT 8801
#define SGIP_THREAD4SGIPACCEPT_INTER_TIME 100 //Thread4SGIPAccept线程的间隔时间(毫秒)
//Both 消息类型包括:
#define SGIP_BIND 0x00000001
#define SGIP_BIND_REP 0x80000001
#define SGIP_UNBIND 0x00000002
#define SGIP_UNBIND_REP 0x80000002
#define SGIP_SUBMIT 0x00000003
#define SGIP_SUBMIT_REP 0x80000003
#define SGIP_DELIVER 0x00000004
#define SGIP_DELIVER_REP 0x80000004
#define SGIP_REPORT 0x00000005
#define SGIP_REPORT_REP 0x80000005
#define SGIP_CHECKUSER 0x00000010
#define SGIP_CHECKUSER_REP 0x80000010
#define SGIP_USERRPT 0x00000011
#define SGIP_USERRPT_REP 0x80000011
#define SGIP_TRACE 0x00001000
#define SGIP_TRACE_REP 0x80001000
#define SGIP_MAX_LEN_USERNAME 16
#define SGIP_MAX_LEN_PASSWORD 16
struct _SGIP_MSG_ID
{
DWORD dwSPID;
DWORD dwTime;
DWORD dwSequenceNO; //消息流水号,顺序累加,步长为1,循环使用,范围:01h-07fffffffh
};
struct _SGIP_HEAD
{
DWORD dwCommandLength; //消息总长度(含消息头及消息体)
DWORD dwCommandID; //命令或响应类型
_SGIP_MSG_ID sMsgID;
};
struct _SGIP_BIND
{
BYTE bLoginType;
char szLoginName[SGIP_MAX_LEN_USERNAME];
char szPassword[SGIP_MAX_LEN_PASSWORD];
BYTE bReserve[8];
};
struct _SGIP_BIND_REP
{
BYTE bResult;
BYTE bReserve[8];
};
struct _SGIP_UNBIND
{
//Null
};
struct _SGIP_UNBIND_REP
{
//Null
};
struct _SGIP_SUBMIT
{
char szSPNumber[MAX_LEN_MOBILE_ID + 1];
char szChargeNumber[MAX_LEN_MOBILE_ID + 1];
BYTE bUserCount;
char szUserNumber[(MAX_LEN_MOBILE_ID + 1) * MAX_DEST_USR];
char szCorpID[5];
char szServiceType[10]; //业务类型
BYTE bFeeType;
char szFeeValue[6];
char szGivenValue[6];
BYTE bAgentFlag;
BYTE bMoreLateToMTFlag;
BYTE bPriority; //0~9
char szExpireTime[16]; //存活有效期,格式遵循SGIP3.3协议
char szScheduleTime[16]; //定时发送时间,格式遵循SGIP3.3协议
BYTE bReportFlag; //状态报告标志(0:出错时返回报告,1--需要,2--不需要,3)
BYTE bTPpid;
BYTE bTPudhi;
BYTE bMessageCoding;
BYTE bMessageType;
DWORD dwMessageLength;
BYTE bMessageContent[MAX_BUFFER_LEN_CONTENT + 1];
BYTE bReserve[8];
};
struct _SGIP_SUBMIT_REP
{
BYTE bResult;
BYTE bReserve[8];
};
struct _SGIP_DELIVER
{
char szUserNumber[MAX_LEN_MOBILE_ID + 1];
char szSPNumber[MAX_LEN_MOBILE_ID + 1];
BYTE bTP_pid;
BYTE bTP_udhi;
BYTE bMessageCoding;
DWORD dwMessageLength;
BYTE bMessageContent[MAX_BUFFER_LEN_CONTENT + 1];
BYTE bReserve[8];
};
struct _SGIP_DELIVER_REP
{
BYTE bResult;
BYTE bReserve[8];
};
struct _SGIP_REPORT
{
_SGIP_MSG_ID sMsgID4Submit;
BYTE bReportType;
char szUserNumber[MAX_LEN_MOBILE_ID + 1];
BYTE bState;
BYTE bErrorCode;
BYTE bReserve[8];
};
struct _SGIP_REPORT_REP
{
BYTE bResult;
BYTE bReserve[8];
};
struct _SGIP_USERRPT
{
char szSPNumber[MAX_LEN_MOBILE_ID + 1];
char szUserNumber[MAX_LEN_MOBILE_ID + 1];
BYTE bUserCondition;
BYTE bReserve[8];
};
struct _SGIP_USERRPT_REP
{
BYTE bResult;
BYTE bReserve[8];
};
struct _SGIP_TRACE
{
_SGIP_MSG_ID sMsgID4Submit;
char szUserNumber[MAX_LEN_MOBILE_ID + 1];
BYTE bReserve[8];
};
struct _SGIP_TRACE_NODE
{
BYTE bResult;
char szNodeID[6];
char szReceiveTime[16];
char szSendTime[16];
BYTE bReserve[8];
};
struct _SGIP_TRACE_REP
{
BYTE bCount;
_SGIP_TRACE_NODE sNode[255];
};
union _SGIP_BODY
{
struct _SGIP_BIND sMessageBind;
struct _SGIP_BIND_REP sMessageBindRep;
struct _SGIP_UNBIND sMessageUnbind;
struct _SGIP_UNBIND_REP sMessageUnbindRep;
struct _SGIP_SUBMIT sMessageSubmit;
struct _SGIP_SUBMIT_REP sMessageSubmitRep;
struct _SGIP_DELIVER sMessageDeliver;
struct _SGIP_DELIVER_REP sMessageDeliverRep;
struct _SGIP_REPORT sMessageReport;
struct _SGIP_REPORT_REP sMessageReportRep;
struct _SGIP_USERRPT sMessageUserRpt;
struct _SGIP_USERRPT_REP sMessageUserRptRep;
struct _SGIP_TRACE sMessageTrace;
struct _SGIP_TRACE_REP sMessageTraceRep;
};
struct _SGIP
{
_SGIP_HEAD sMessageHead;
_SGIP_BODY uMessageBody;
};
/////////////////////////////////////////////////////////////////////////////
// CPSgip
class ATL_NO_VTABLE CPSgip :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CPSgip, &CLSID_PSgip>,
public ISupportErrorInfo,
public IConnectionPointContainerImpl<CPSgip>,
public IDispatchImpl<IPSgip, &IID_IPSgip, &LIBID_SGIPLib>,
public CProxy_IPSgipEvents< CPSgip >
{
public:
CPSgip():m_cQueueEmpty(MAX_BUFFER_SIZE), m_cQueueReady(MAX_BUFFER_SIZE), m_cFileRecorder("SGIP")
{
m_szLocalIP[0] = 0;
m_szSaveFile[0] = 0;
m_iPortListen = 0;
m_lBufferIndex4MultiSM = -1;
m_lSendMaxNumberPerPackage = 1;
//us
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -