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

📄 sgippacket.h

📁 一个SGIP网关的程序源码.vc代码
💻 H
📖 第 1 页 / 共 2 页
字号:
} ;
struct SREPORT
{
	unsigned long  Msglen;//消息的总长度(字节)
    unsigned long  Cmd_id;//命令ID
    unsigned long  Seq_Number1;//序列号,只记录后四个字节
    unsigned long  Seq_Number2;//序列号,只记录后四个字节
    unsigned long  Seq_Number3;//序列号,只记录后四个字节

    unsigned long  SubmitSequenceNumber1;//第一部分表示命令源节点的编号
    unsigned long  SubmitSequenceNumber2;//第二部分表示命令产生的日期和时间(网关系统中
	//的任何命令的保存时间都不应该超过一年),格式为十进制的mmddhhmmss,
	//比如11月20日20时32分25秒产生的命令,其第二部分为十进制1120203225
    unsigned long  SubmitSequenceNumber3;//第三部分由0开始,循环进位,直到进位满了之后再清零,重新开始计数
	
    BYTE ReportType;  //Report命令类型0:对先前一条Submit命令的状态报告
	//1:对先前一条前转Deliver命令的状态报告
    char   UserNumber[21];// 接收短消息的手机号,手机号码前加"86"国别标志
    BYTE   State;//该命令所涉及的短消息的当前执行状态0:发送成功1:等待发送2:发送失败
    BYTE   ErrorCode;//	当State=2时为错误码值,否则为0
    char Reserve[8];//	 	保留,扩展用
	
} ;

struct SREPORT_RESP
{
		unsigned long  Msglen;//消息的总长度(字节)
    unsigned long  Cmd_id;//命令ID
    unsigned long  Seq_Number1;//序列号,只记录后四个字节
    unsigned long  Seq_Number2;//序列号,只记录后四个字节
    unsigned long  Seq_Number3;//序列号,只记录后四个字节

    BYTE Result;//命令是否成功接收。0:接收成功其它:错误码
    char Reserve[8];//	保留,扩展用
	
} ;
struct STRACE
{
  	unsigned long  Msglen;//消息的总长度(字节)
    unsigned long  Cmd_id;//命令ID
    unsigned long  Seq_Number1;//序列号,只记录后四个字节
    unsigned long  Seq_Number2;//序列号,只记录后四个字节
    unsigned long  Seq_Number3;//序列号,只记录后四个字节

	unsigned long  SubmitSequenceNumber1;//第一部分表示命令源节点的编号
    unsigned long  SubmitSequenceNumber2;//第二部分表示命令产生的日期和时间(网关系统中
	//的任何命令的保存时间都不应该超过一年),格式为十进制的mmddhhmmss,
	//比如11月20日20时32分25秒产生的命令,其第二部分为十进制1120203225
    unsigned long  SubmitSequenceNumber3;//第三部分由0开始,循环进位,直到进位满了之后再清零,重新开始计数
	
	char UserNumber[21];// 被跟踪MT短消息的目的手机号,手机号码前加"86"国别标志
	char Reserve[8];//	 	保留,扩展用
	
	
} ;
struct STRACE_RESP
{
		unsigned long  Msglen;//消息的总长度(字节)
    unsigned long  Cmd_id;//命令ID
    unsigned long  Seq_Number1;//序列号,只记录后四个字节
    unsigned long  Seq_Number2;//序列号,只记录后四个字节
    unsigned long  Seq_Number3;//序列号,只记录后四个字节

    BYTE  Count;//被跟踪MT短消息经过的节点个数,当被跟踪短消息经过多个节点时,以下各个字段可重复
    BYTE  Result;//Trace命令在该节点是否成功接收。十六进制数字0:接收成功1:等待处理其它:错误码
	char NodeId[6];// 	节点编号
	char ReceiveTime[16];//被跟踪的短消息到达该节点时刻,格式为"yymmddhhmmss"
	char SendTime[16];// 该节点发出被跟踪的短消息时刻,格式为"yymmddhhmmss"
	char Reserve[8];//	 	保留,扩展用
	
	
} ;
struct SSGIP_MESSAGE_HEAD
{
    unsigned long  Msglen;//消息的总长度(字节)
    unsigned long  Cmd_id;//命令ID
    unsigned long  Seq_Number1;//序列号,只记录后四个字节
    unsigned long  Seq_Number2;//序列号,只记录后四个字节
    unsigned long  Seq_Number3;//序列号,只记录后四个字节
} ;


struct SUSER_DATA_INFO
{
	unsigned long  user_id;  //通信节点(SMG、GNS、SP和SMSC)都有一个唯一的数字编号
	int   user_state;        //0  用户在线;1 用户连接断开
    unsigned long  originality_message_sequence1;//本网关接收到的原始消息序列号
    unsigned long  originality_message_sequence2;
	unsigned long  originality_message_sequence3;
	//如果命令序列号和以前序列号相同,且内容也相同,则接收方丢弃该命令;
	//如果序列号相同,但是命令内容并不相同,则命令接收方在应答中返回错误码。
	unsigned long  new_message_sequence1;//本网关产生的需发送的消息序列号---对于MO短消息
    unsigned long  new_message_sequence2;
	unsigned long  new_message_sequence3;
	int     max_message_send_count;// 本消息最大传输次数
	int     message_send_count;    // 本消息已经传输次数,0表示未向目标地址发消息
	//如果大于max_message_send_count
	//丢掉本消息
//	SSGIP_MESSAGE_HEAD  message_head;
	
//	char strusermessage[160];      //(在链表中)保存的需要向某用户重发的消息内容
    unsigned char the_message[320];
	char SPNumber[21];       //SP的接入号码
	int  m_Socketclient_id;   //与某SMG连接的标识
	int  m_SocketManager_id;  //与某SP连接的标识
	long   data_id;
	int  is_sp_or_smg; //Report_Resp  专用  1 sp; 2 smg
} ;

struct SUSER_SP_SESSION_INFO
{
	unsigned long  user_id;  //通信节点(SMG、GNS、SP和SMSC)都有一个唯一的数字编号
 
    bool  is_encrypted;   //通信是否加密
    int   purchase_type;//用户鉴权--------付费方式
 
    long Message_type;    //消息类型
	int  Protocol_type;  //0 SGIP;1 SMPP; 2 CMPP;3 自定义; 4 其他
	int  user_type;      //0 SP; 1 SMG; 2 SMSC
	unsigned long  message_geted_count;  //收到这个用户发出的消息总数
	int  message_sended_count; //向这个用户发出的消息总数
	int  message_error_count;  
	int  message_in_buffer_count; //需要向这个用户(重新)发出的消息总数(在链表中)
	int  message_in_buffer_max;  //(在链表中)能保存的消息数上限
	
	int  message_error_code;//发生故障时,SP、SMG以及GNS节点应通过Report命令和其它相关命令
	//的应答相结合返回故障原因;
	//如果MO不成功,该用户所属的SMG还应向用户终端返回友好的应答信息说明不成功原因。
	char message_error_describe[120]; //对用户反馈的消息
    
	bool is_initializtion;   //是否是bind 操作,考虑 bind 操作与普通消息的优先级问题
	time_t dtOccurTime;		  // 最近一次消息事件发生时间,如果大于60秒,
	//服务器端可以主动断开该连接
	bool save_to_database;  //是否将本节点全部消息写入数据库
    char SPNumber[21];
} ;

struct SUSER_SMG_SESSION_INFO
{
	unsigned long  user_id;  //通信节点(SMG、GNS、SP和SMSC)都有一个唯一的数字编号
 
    bool  is_encrypted;   //通信是否加密
    int   purchase_type;//用户鉴权--------付费方式
 
    long Message_type;    //消息类型
	int  Protocol_type;  //0 SGIP;1 SMPP; 2 CMPP;3 自定义; 4 其他
	int  user_type;      //0 SP; 1 SMG; 2 SMSC
	unsigned long  message_geted_count;  //收到这个用户发出的消息总数
	int  message_sended_count; //向这个用户发出的消息总数
	int  message_error_count;  
	int  message_in_buffer_count; //需要向这个用户(重新)发出的消息总数(在链表中)
	int  message_in_buffer_max;  //(在链表中)能保存的消息数上限
	
	int  message_error_code;//发生故障时,SP、SMG以及GNS节点应通过Report命令和其它相关命令
	//的应答相结合返回故障原因;
	//如果MO不成功,该用户所属的SMG还应向用户终端返回友好的应答信息说明不成功原因。
	char message_error_describe[120]; //对用户反馈的消息
    
	bool is_initializtion;   //是否是bind 操作,考虑 bind 操作与普通消息的优先级问题
	time_t dtOccurTime;		  // 最近一次消息事件发生时间,如果大于60秒,
	//服务器端可以主动断开该连接
	bool save_to_database;  //是否将本节点全部消息写入数据库
 
} ;

class CSGIPPacket  
{
public:
	CSGIPPacket();
	virtual ~CSGIPPacket();
private:
	int mnSN;
private:
	unsigned long GetSGIPTime();
public:
	// 关于绑定
	int PacketBind(BYTE *lpBuffer);
	int PacketBindResp(BYTE *lpBuffer, SBIND *pBindPacket);
	int PacketUnbindResp(BYTE *lpBuffer, SSGIP_MESSAGE_HEAD *pUnbindPacket);
	int GetBindRespResult(SBIND_RESP *pBindRespPacket);
	// 关于提交
	int PacketSubmit(BYTE *lpBuffer, int nFeeType, char *strServiceType, char *strFeeValue, LPCTSTR strSender, LPCTSTR strSendTo,LPCTSTR strMsg);
	int GetSubmitRespResult(SSUBMIT_RESP *pSubmitRespPacket);
	// 关于deliver
	void ParseDeliverPacket(BYTE *lpBuffer, LPTSTR strSender, LPTSTR strSendTo, LPTSTR strMsg);
	int PacketDeliverResp(BYTE *lpBuffer, SDELIVER *pDeliverPacket);
};

#endif // !defined(AFX_SGIPPACKET_H__82355391_3A47_4A46_A460_86BDCE61FBE6__INCLUDED_)

⌨️ 快捷键说明

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