public class CMPP_CONNECT
{
/// <summary>
/// 消息体的总长度
/// </summary>
private readonly int BodyLength = 6 + 16 + 1 + 4; //消息体的长度
/// <summary>
/// 消息头变量
/// </summary>
private MessageHeader msgHeader;
/// <summary>
/// 消息头属性
/// </summary>
public MessageHeader MsgHeader
{
get { return msgHeader; }
set { msgHeader = value; }
}
/// <summary>
/// 源地址,此处为SP_ID 即SP的企业代码
/// </summary>
private string source_Addr;
/// <summary>
/// 源地址,此处为SP_ID 即SP的企业代码 属性
/// </summary>
public string Source_Addr
{
get { return source_Addr; }
set { source_Addr = value; }
}
/// <summary>
/// 用于鉴别源地址
/// </summary>
private byte[] authenticatorSource;
/// <summary>
/// 用于鉴别源地址属性
/// </summary>
public byte[] AuthenticatorSource
{
get { return authenticatorSource; }
set { authenticatorSource = value; }
}
/// <summary>
/// 双方协商的版本号
/// </summary>
// private uint version;
/// <summary>
/// 双方协商的版本号 属性
/// </summary>
public byte Version
{
get { return version; }
set { version = value; }
}
public byte version;
/// <summary>
/// 时间的明文,
/// 由客户端产生,
/// 格式为MMDDHHMMSS,
/// 即月日时分秒,
/// 10为数字的整型,
/// 右对齐
/// </summary>
private uint timeStamp;
/// <summary>
/// 时间的明文(属性),
/// 由客户端产生,
/// 格式为MMDDHHMMSS,
/// 即月日时分秒,
/// 10为数字的整型,
/// 右对齐
/// </summary>
public uint TimeStamp
{
get { return timeStamp; }
set { timeStamp = value; }
}
private string _timeStamp;
/// <summary>
/// SP登陆网关的密码
/// </summary>
private string sp_Pwd;
/// <summary>
/// SP登陆网关的密码属性
/// </summary>
public string Sp_Pwd
{
get { return sp_Pwd; }
set { sp_Pwd = value; }
}
/// <summary>
/// 消息流水号
/// </summary>
private uint sequence_Id;
/// <summary>
/// 消息流水号的属性
/// </summary>
public uint Sequence_Id
{
get { return sequence_Id; }
set { sequence_Id = value; }
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="source_Addr">SP的企业代码</param>
/// <param name="sp_Pwd">SP登陆网关的密码</param>
/// <param name="timestamp">时间的明文</param>
/// <param name="version">版本号</param>
/// <param name="sequence_Id">消息流水号</param>
public CMPP_CONNECT(string source_Addr, string sp_Pwd, DateTime timestamp, byte version, uint sequence_Id)
{
this.msgHeader = new MessageHeader((uint)(MessageHeader.HeaderLength + BodyLength), (Command_Id)Command_Id.CMPP_CONNECT, (uint)sequence_Id);
this.source_Addr = source_Addr;
this.sp_Pwd = sp_Pwd;
this._timeStamp = Util.Get_MMDDHHMMSS_String(timestamp);
this.timeStamp = UInt32.Parse(_timeStamp);
this.version = version;
this.authenticatorSource = getMd5Code();
}
/// <summary>
/// CMPP_CONNECT的byte 数组形式
/// </summary>
/// <returns></returns>
public byte[] ToBytes()
{
int i = 0;
byte[] bytes = new byte[MessageHeader.HeaderLength + BodyLength];
byte[] buffer = this.MsgHeader.ToBytes();
Util.ByteCopyToByte(buffer, 0, bytes, i, buffer.Length);
i = i + 12;
buffer = BIConvert.String2Bytes(this.Source_Addr);
Util.ByteCopyToByte(buffer, 0, bytes, i, buffer.Length);
i = i + 6;
buffer = this.AuthenticatorSource;
Util.ByteCopyToByte(buffer, 0, bytes, i, buffer.Length);
i = i + 16;
bytes[i] = this.Version;
i++;
buffer = BIConvert.Int2Bytes(this.TimeStamp);
Util.ByteCopyToByte(buffer, 0, bytes, i, buffer.Length);
i = i + 4;
return bytes;
}