📄 messagehead.cs
字号:
}
}
public uint Dest_terminal_type
{
get
{
return this._Dest_terminal_type;
}
set
{
this._Dest_terminal_type = value;
}
}
public uint Msg_Length
{
get
{
return this._Msg_Length;
}
set
{
this._Msg_Length = value;
}
}
public string Msg_Content
{
get
{
return this._Msg_Content;
}
set
{
this._Msg_Content = value;
this.SetHeader();
}
}
public string LinkId
{
get
{
return this._LinkID;
}
set
{
this._LinkID = value;
}
}
public override string ToString()
{
return "[\r\n"
+ this._Header.ToString() + "\r\n"
+ string.Format
(
"\tMessageBody:"
+ "\r\n\t\tAt_Time: {0}"
+ "\r\n\t\tBodyLength: {1}"
+ "\r\n\t\tDest_terminal_Id: {2}"
+ "\r\n\t\tDest_terminal_type: {3}"
+ "\r\n\t\tDestUsr_tl: {4}"
+ "\r\n\t\tFee_terminal_Id: {5}"
+ "\r\n\t\tFee_terminal_type: {6}"
+ "\r\n\t\tFee_UserType: {7}"
+ "\r\n\t\tFeeCode: {8}"
+ "\r\n\t\tFeeType: {9}"
+ "\r\n\t\tLinkID: {10}"
+ "\r\n\t\tMsg_Content: {11}"
+ "\r\n\t\tMsg_Fmt: {12}"
+ "\r\n\t\tMsg_Id: {13}"
+ "\r\n\t\tMsg_Length: {14}"
+ "\r\n\t\tMsg_level: {15}"
+ "\r\n\t\tMsg_src: {16}"
+ "\r\n\t\tPk_number: {17}"
+ "\r\n\t\tPk_total: {18}"
+ "\r\n\t\tRegistered_Delivery: {19}"
+ "\r\n\t\tSequence_Id: {20}"
+ "\r\n\t\tService_Id: {21}"
+ "\r\n\t\tSrc_Id: {22}"
+ "\r\n\t\tTP_pId: {23}"
+ "\r\n\t\tTP_udhi: {24}"
+ "\r\n\t\tValId_Time: {25}"
, this._At_Time
, this._BodyLength
, String.Join(",", this._Dest_terminal_Id)
, this._Dest_terminal_type
, this._DestUst_tl
, this._Fee_terminal_Id
, this._Fee_terminal_type
, this._Fee_UserType
, this._FeeCode
, this._FeeType
, this._LinkID
, this._Msg_Content
, this._Msg_Fmt
, this._Msg_Id
, this._Msg_Length
, this._Msg_level
, this._Msg_src
, this._Pk_number
, this._Pk_total
, this._Registered_Delivery
, this._Sequence_Id
, this._Service_Id
, this._Src_Id
, this._TP_pId
, this._TP_udhi
, this._ValId_Time
)
+ "\r\n]";
}
}
public class CMPP_SUBMIT_RESP //: CMPP_Response
{
private Message_Header _Header;
private uint _Msg_Id;
private uint _Result;
public const int BodyLength = 8 + 4;
public uint Msg_Id
{
get
{
return this._Msg_Id;
}
}
public uint Result
{
get
{
return this._Result;
}
}
public Message_Header Header
{
get
{
return this._Header;
}
}
public CMPP_SUBMIT_RESP(byte[] bytes)
{
int i = 0;
byte[] buffer = new byte[Message_Header.Length];
Buffer.BlockCopy(bytes, 0, buffer, 0, buffer.Length);
this._Header = new Message_Header(buffer);
//Msg_Id
i += Message_Header.Length;
buffer = new byte[8];
Buffer.BlockCopy(bytes, i, buffer, 0, buffer.Length);
Array.Reverse(buffer);
this._Msg_Id = BitConverter.ToUInt32(buffer, 0);
//Result
i += 8;
buffer = new byte[4];
Buffer.BlockCopy(bytes, i, buffer, 0, buffer.Length);
Array.Reverse(buffer);
this._Result = BitConverter.ToUInt32(buffer, 0);
}
public override string ToString()
{
return "[\r\n]"
+ this._Header.ToString() + "\r\n"
+ string.Format
(
"\tMessageBody:"
+ "\r\n\t\tMsg_Id: {0}"
+ "\r\n\t\tResult: {1}"
,this._Msg_Id
, this._Result
)
+ "\r\n]";
}
}
public class CMPP_DELIVER //: CMPP_Request
{
public ulong Msg_Id
{
get
{
return _Msg_Id;
}
}
public string Dest_Id
{
get
{
return _Dest_Id;
}
}
public string Service_Id
{
get
{
return _Service_Id;
}
}
public uint TP_pid
{
get
{
return _TP_pid;
}
}
public uint TP_udhi
{
get
{
return _TP_udhi;
}
}
public uint Msg_Fmt
{
get
{
return _Msg_Fmt;
}
}
public string Src_terminal_Id
{
get
{
return _Src_terminal_Id;
}
}
public uint Src_terminal_type
{
get
{
return _Src_terminal_type;
}
}
public uint Registered_Delivery
{
get
{
return _Registered_Delivery;
}
}
public uint Msg_Length
{
get
{
return _Msg_Length;
}
}
public string Msg_Content
{
get
{
return _Msg_Content;
}
}
public string LinkId
{
get
{
return _LinkID;
}
}
private ulong _Msg_Id; //8 Unsigned Integer 信息标识
// 生成算法如下:
// 采用64位(8字节)的整数:
// (1)时间(格式为MMDDHHMMSS,即月日时分秒):bit64~bit39,其中
// bit64~bit61:月份的二进制表示;
// bit60~bit56:日的二进制表示;
// bit55~bit51:小时的二进制表示;
// bit50~bit45:分的二进制表示;
// bit44~bit39:秒的二进制表示;
// (2)短信网关代码:bit38~bit17,把短信网关的代码转换为整数填写到该字段中;
// (3)序列号:bit16~bit1,顺序增加,步长为1,循环使用。
// 各部分如不能填满,左补零,右对齐。
private string _Dest_Id;// 21 Octet String 目的号码。
// SP的服务代码,一般4--6位,或者是前缀为服务代码的长号码;该号码是手机用户短消息的被叫号码。
private string _Service_Id;// 10 Octet String 业务标识,是数字、字母和符号的组合。
private uint _TP_pid;// 1 Unsigned Integer GSM协议类型。详细解释请参考GSM03.40中的9.2.3.9。
private uint _TP_udhi;// 1 Unsigned Integer GSM协议类型。详细解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐。
private uint _Msg_Fmt;// 1 Unsigned Integer 信息格式:
// 0:ASCII串;
// 3:短信写卡操作;
// 4:二进制信息;
// 8:UCS2编码;
// 15:含GB汉字。
private string _Src_terminal_Id;// 32 Octet String 源终端MSISDN号码(状态报告时填为CMPP_SUBMIT消息的目的终端号码)。
private uint _Src_terminal_type;// 1 Unsigned Integer 源终端号码类型,0:真实号码;1:伪码。
private uint _Registered_Delivery;// 1 Unsigned Integer 是否为状态报告:
// 0:非状态报告;
// 1:状态报告。
private uint _Msg_Length;// 1 Unsigned Integer 消息长度,取值大于或等于0。
private string _Msg_Content;// Msg_length Octet String 消息内容。
private string _LinkID;// 20 Octet String 点播业务使用的LinkID,非点播类业务的MT流程不使用该字段。
private Message_Header _Header;
public Message_Header Header
{
get
{
return this._Header;
}
}
public const int FixedBodyLength =
8// Msg_Id Unsigned Interger 信息标识
// 生成算法如下:
// 采用64位(8字节)的整数:
// (1)时间(格式为MMDDHHMMSS,即月日时分秒):bit64~bit39,其中
// bit64~bit61:月份的二进制表示;
// bit60~bit56:日的二进制表示;
// bit55~bit51:小时的二进制表示;
// bit50~bit45:分的二进制表示;
// bit44~bit39:秒的二进制表示;
// (2) 短信网关代码:bit38~bit17,把短信网关的代码转换为整数填写到该字段中;
// (3) 序列号:bit16~bit1,顺序增加,步长为1,循环使用。
// 各部分如不能填满,左补零,右对齐。
+ 21 // Dest_Id Octet String 目的号码。
// SP的服务代码,一般4--6位,或者是前缀为服务代码的长号码;该号码是手机用户短消息的被叫号码。
+ 10 // Service_Id Octet String 业务标识,是数字、字母和符号的组合。
+ 1 // TP_pid Unsigned Integer GSM协议类型。详细解释请参考GSM03.40中的9.2.3.9。
+ 1 // TP_udhi Unsigned Integer GSM协议类型。详细解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐。
+ 1 // Msg_Fmt Unsigned Integer 信息格式:
// 0:ASCII串;
// 3:短信写卡操作;
// 4:二进制信息;
// 8:UCS2编码;
// 15:含GB汉字。
+ 32 // Src_terminal_Id Octet String 源终端MSISDN号码(状态报告时填为CMPP_SUBMIT消息的目的终端号码)。
+ 1 // Src_terminal_type Unsigned Integer 源终端号码类型,0:真实号码;1:伪码。
+ 1 // Registered_Delivery Unsigned Integer 是否为状态报告:
// 0:非状态报告;
// 1:状态报告。
+ 1 // Msg_Length Unsigned Integer 消息长度,取值大于或等于0。
//Msg_length // Msg_Content Octet String 消息内容。
+ 20; // LinkID Octet String 点播业务使用的LinkID,非点播类业务的MT流程不使用该字段。
private int _BodyLength;
public int BodyLength
{
get
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -