admin管理员组

文章数量:1642342

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

本文标签: 协议SGIPdeliver