CMPP协议之CMPP_CONNECT


    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;
        }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值