📄 sgippacket.h
字号:
// SGIPPacket.h: interface for the CSGIPPacket class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_SGIPPACKET_H__82355391_3A47_4A46_A460_86BDCE61FBE6__INCLUDED_)
#define AFX_SGIPPACKET_H__82355391_3A47_4A46_A460_86BDCE61FBE6__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#pragma pack(1)
// Event value
#define EVT_CONSUCCESS 0x0000 // Connection established
#define EVT_CONFAILURE 0x0001 // General failure - Wait Connection failed
#define EVT_CONDROP 0x0002 // Connection dropped
#define EVT_ZEROLENGTH 0x0003 // Zero length message
//消息ID定义
//消息ID名称 消息ID取值
#define SGIP_BIND 0x1 //客户端首先发送Bind命令
#define SGIP_BIND_RESP 0x80000001 //server 对Bind命令的应答
#define SGIP_UNBIND 0x2 //客户端如果要停止通信,需要发送Unbind命令
#define SGIP_UNBIND_RESP 0x80000002 //服务器端收到Unbind命令后,向客户端发送Unbind_Resp相应,然后双方断开连接
#define SGIP_SUBMIT 0x3 //在SP和SMG的通信中,SP用Submit命令向SMG提交MT短消息,发送到用户的手机中
//在SMG和SMG的通信中,Submit命令用于SMG客户端向服务器端路由从SP收到的MT短消息
#define SGIP_SUBMIT_RESP 0x80000003 //SMG接收到Submit命令,会返回Submit_Resp应答
#define SGIP_DELIVER 0x4 //在SP和SMG的通信中,SMG用Deliver命令向SP发送一条MO短消息。
//在SMG和SMG的通信中,Deliver命令用于SMG客户端向服务器端路由MO短消息
#define SGIP_DELIVER_RESP 0x80000004 //SP接收到Deliver命令,会返回Deliver_Resp应答
//
#define SGIP_REPORT 0x5 //用于向SP发送一条先前的Submit命令的当前状态,
//或者用于向前转SMG发送一条先前的Deliver命令的当前状态
#define SGIP_REPORT_RESP 0x80000005 //Report命令的接收方需要向发送方返回Report_Resp命令
#define SGIP_ADDSP 0x6 //AddSP操作用于在SMG和GNS之间通知添加了一个SP
#define SGIP_ADDSP_RESP 0x80000006
#define SGIP_MODIFYSP 0x7 //ModifySP操作用于在SMG和GNS之间通知修改了一个SP的接入号码。
#define SGIP_MODIFYSP_RESP 0x80000007
#define SGIP_DELETESP 0x8 //DeleteSP操作用于在SMG和GNS之间通知删除了一个SP的接入号码
#define SGIP_DELETESP_RESP 0x80000008
#define SGIP_QUERYROUTE 0x9 //QueryRoute操作用于在SMG向GNS请求一条或全部路由信息
#define SGIP_QUERYROUTE_RESP 0x80000009
#define SGIP_ADDTELESEG 0xa //AddTeleSeg操作用于在GNS向SMG通知添加了一个号码段。
#define SGIP_ADDTELESEG_RESP 0x8000000a
#define SGIP_MODIFYTELESEG 0xb //ModifyTeleSeg操作用于在GNS向SMG通知修改了一个号码段
#define SGIP_MODIFYTELESEG_RESP 0x8000000b
#define SGIP_DELETETELESEG 0xc //DeleteTeleSeg操作用于在GNS通知SMG删除了一个号码段。
#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 //鉴权消息用于SMG向计费中心请求对一个手机用户进行鉴权
#define SGIP_CHECKUSER_RESP 0x80000010
#define SGIP_USERRPT 0x11 //用于完成对用户鉴权后,由SMG向手机用户所注册的SP发送命令,
//对手机用户进行状态配置。
#define SGIP_USERRPT_RESP 0x80000011
#define SGIP_TRACE 0x1000 //测试消息用于向SMG请求跟踪查询某一条MT短消息的状态
#define SGIP_TRACE_RESP 0x80001000
#define BUFFER_SIZE MAX_PATH
#define HOSTNAME_SIZE MAX_PATH
#define STRING_LENGTH 40
struct SBIND
{
unsigned long Msglen;//消息的总长度(字节)
unsigned long Cmd_id;//命令ID
unsigned long Seq_Number1;//序列号,只记录后四个字节
unsigned long Seq_Number2;//序列号,只记录后四个字节
unsigned long Seq_Number3;//序列号,只记录后四个字节
BYTE Login_Type; // 登录类型。1:SP向SMG建立的连接,用于发送命令
//2:SMG向SP建立的连接,用于发送命令
//3:SMG之间建立的连接,用于转发命令
//4:SMG向GNS建立的连接,用于路由表的检索和维护
//5:GNS向SMG建立的连接,用于路由表的更新
//6:主备GNS之间建立的连接,用于主备路由表的一致性
//11:SP与SMG以及SMG之间建立的测试连接,用于跟踪测试
//其它:保留
char Login_Name[16]; //服务器端给客户端分配的登录名
char Login_Passowrd[16]; //服务器端和Login Name对应的密码
char Reserve[8]; //保留,扩展用
} ;
struct SBIND_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 SSUBMIT
{
unsigned long Msglen;//消息的总长度(字节)
unsigned long Cmd_id;//命令ID
unsigned long Seq_Number1;//序列号,只记录后四个字节
unsigned long Seq_Number2;//序列号,只记录后四个字节
unsigned long Seq_Number3;//序列号,只记录后四个字节
char SPNumber[21]; //SP的接入号码
char ChargeNumber[21]; //付费号码,手机号码前加"86"国别标志;当且仅当群发且对用户收费时为空;
//如果为空,则该条短消息产生的费用由UserNumber代表的用户支付;
//如果为全零字符串"000000000000000000000",表示该条短消息产生的费用由SP支付
BYTE UserCount; //接收短消息的手机数量,取值范围1至100
char UserNumber[21]; //接收该短消息的手机号,该字段重复UserCount指定的次数,
//手机号码前加"86"国别标志
char CorpId[5]; //企业代码,取值范围0-99999
char ServiceType[10]; //业务代码,由SP定义
BYTE FeeType; //计费类型
char FeeValue[6] ; //取值范围0-99999,该条短消息的收费值,单位为分,
//由SP定义对于包月制收费的用户,该值为月租费的值
char GivenValue[6]; //取值范围0-99999,赠送用户的话费,单位为分,
//由SP定义,特指由SP向用户发送广告时的赠送话费
BYTE AgentFlag; //代收费标志,0:应收;1:实收
BYTE MorelatetoMTFlag; //引起MT消息的原因:
//0-MO点播引起的第一条MT消息;1-MO点播引起的非第一条MT消息;
//2-非MO点播引起的MT消息;3-系统反馈引起的MT消息。
BYTE Priority; //优先级0-9从低到高,默认为0
char ExpireTime[16]; //短消息寿命的终止时间,如果为空,表示使用短消息中心的缺省值。时间内容为16个字符,
//格式为"yymmddhhmmsstnnp" ,其中"tnnp"取固定值"032+",即默认系统为北京时间
char ScheduleTime[16]; //短消息定时发送的时间,如果为空,表示立刻发送该短消息。时间内容为16个字符,
//格式为"yymmddhhmmsstnnp" ,其中"tnnp"取固定值"032+",即默认系统为北京时间
BYTE ReportFlag; //状态报告标记
//0-该条消息只有最后出错时要返回状态报告
//1-该条消息无论最后是否成功都要返回状态报告
//2-该条消息不需要返回状态报告
//3-该条消息仅携带包月计费信息,不下发给用户,要返回状态报告
//其它-保留
//缺省设置为0
BYTE TP_pid; //GSM协议类型。详细解释请参考GSM03.40中的9.2.3.9
BYTE TP_udhi; //GSM协议类型。详细解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐
BYTE MessageCoding; //短消息的编码格式。0:纯ASCII字符串3:写卡操作
//4:二进制编码8:UCS2编码15: GBK编码
//其它参见GSM3.38第4节:SMS Data Coding Scheme
BYTE MessageType; //0-短消息信息其它:待定
long MessageLength; //短消息的长度
char MessageContent[160]; //短消息的内容
char Reserve[8]; //保留,扩展用
} ;
struct SSUBMIT_RESP
{
unsigned long Msglen;//消息的总长度(字节)
unsigned long Cmd_id;//命令ID
unsigned long Seq_Number1;//序列号,只记录后四个字节
unsigned long Seq_Number2;//序列号,只记录后四个字节
unsigned long Seq_Number3;//序列号,只记录后四个字节
BYTE Result;
char Reserve[8];
} ;
struct SDELIVER
{
unsigned long Msglen;//消息的总长度(字节)
unsigned long Cmd_id;//命令ID
unsigned long Seq_Number1;//序列号,只记录后四个字节
unsigned long Seq_Number2;//序列号,只记录后四个字节
unsigned long Seq_Number3;//序列号,只记录后四个字节
char UserNumber[21]; //发送短消息的用户手机号,手机号码前加"86"国别标志
char SPNumber[21]; //SP的接入号码
BYTE TP_pid; //GSM协议类型。详细解释请参考GSM03.40中的9.2.3.9
BYTE TP_udhi; //GSM协议类型。详细解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐
BYTE MessageCoding; //短消息的编码格式。0:纯ASCII字符串3:写卡操作
//4:二进制编码8:UCS2编码15: GBK编码
//其它参见GSM3.38第4节:SMS Data Coding Scheme
int MessageLength; //短消息的长度
char MessageContent[160]; //短消息的内容
char Reserve[8];
} ;
struct SDELIVER_RESP
{
unsigned long Msglen;//消息的总长度(字节)
unsigned long Cmd_id;//命令ID
unsigned long Seq_Number1;//序列号,只记录后四个字节
unsigned long Seq_Number2;//序列号,只记录后四个字节
unsigned long Seq_Number3;//序列号,只记录后四个字节
BYTE Result;
char Reserve[8];
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -