SGIP协议之Deliver

    /// <summary>
    /// 功能:消息上行到SP客户端
    /// 时间:2010年12月28日
    /// </summary>
    public class Deliver
    {
        private int bodyLength;

        /// <summary>
        /// 消息体长度
        /// </summary>
        public int BodyLength
        {
            get { return bodyLength; }
            set { bodyLength = value; }
        }

        private int Length = 21 + 21 + 1 + 1 + 1 + 4 + 8;

        private MessageHeader msgHeader;

        /// <summary>
        /// 消息头
        /// </summary>
        public MessageHeader MsgHeader
        {
            get { return msgHeader; }
            set { msgHeader = value; }
        }

        private string userNumber;

        public string UserNumber
        {
            get { return userNumber; }
            set { userNumber = value; }
        }
        private string sPNumber;

        public string SPNumber
        {
            get { return sPNumber; }
            set { sPNumber = value; }
        }
        private uint tP_pid;

        public uint TP_pid
        {
            get { return tP_pid; }
            set { tP_pid = value; }
        }
        private uint tP_udhi;

        public uint TP_udhi
        {
            get { return tP_udhi; }
            set { tP_udhi = value; }
        }
        private uint messageCoding;

        public uint MessageCoding
        {
            get { return messageCoding; }
            set { messageCoding = value; }
        }
        private uint messageLength;

        public uint MessageLength
        {
            get { return messageLength; }
            set { messageLength = value; }
        }
        private string messageContent;

        public string MessageContent
        {
            get { return messageContent; }
            set { messageContent = value; }
        }
        private string reserve;

        public string Reserve
        {
            get { return reserve; }
            set { reserve = value; }
        }

        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="bytes"></param>
        public Deliver(byte[] bytes)
        {
            int i = 0;
            byte[] buffer = new byte[MessageHeader.HeaderLength];
            Util.ByteCopyToByte(bytes, i, buffer, 0, MessageHeader.HeaderLength);
            this.msgHeader = new MessageHeader(buffer);
            i = i + MessageHeader.HeaderLength;

            buffer = new byte[21];
            Util.ByteCopyToByte(bytes, i, buffer, 0, buffer.Length);
            this.userNumber = BIConvert.Byte2String(buffer);
            i = i + 21;

            buffer = new byte[21];
            Util.ByteCopyToByte(bytes, i, buffer, 0, buffer.Length);
            this.sPNumber = BIConvert.Byte2String(buffer);
            i = i + 21;

            this.tP_pid = (uint)bytes[i++];
            this.tP_udhi = (uint)bytes[i++];
            this.messageCoding = (uint)bytes[i++];

            buffer = new byte[4];
            Util.ByteCopyToByte(bytes, i, buffer, 0, buffer.Length);
            this.messageLength = BIConvert.Bytes2UInt(buffer);
            i = i + 4;

            buffer = new byte[this.messageLength];
            Util.ByteCopyToByte(bytes, i, buffer, 0, buffer.Length);
            switch (this.messageCoding)
            {
                case 8:
                    this.messageContent=Encoding.BigEndianUnicode.GetString(buffer).Trim();
                    break;
                case 15:
                    this.messageContent = Encoding.GetEncoding("gb2312").GetString(buffer).Trim();
                    break;
                case 0:
                case 3:
                case 4:
                default:
                    this.messageContent = Encoding.ASCII.GetString(buffer).ToString();
                    break;
            }
            i += (int)this.messageLength;

            buffer = new byte[8];
            Util.ByteCopyToByte(bytes, i, buffer, 0, buffer.Length);
            this.reserve = BIConvert.Byte2String(buffer);
            i = i + 8;
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值