示例#1
0
    public static MessageOperation FromBytes(byte[] buffer)
    {
        int bufferLength = buffer.Length;

        if (bufferLength < lengthID + lengthLength + 1)//1是 markStart
        {
            return(null);
        }

        MessageOperation message = new MessageOperation();

        using (MemoryStream memoryStream = new MemoryStream(buffer))    //将字节数组填充至内存流
        {
            BinaryReader binaryReader = new BinaryReader(memoryStream); //以二进制读取器读取该流内容

            int mark = binaryReader.ReadByte();                         //标志
            message.Id     = binaryReader.ReadBytes(lengthID);
            message.Length = binaryReader.ReadBytes(lengthLength);

            int dataLength = message.GetLength();
            //如果【进来的Bytes长度】小于【一个完整的MessageXieYi长度】
            if ((bufferLength - (lengthID + lengthLength)) < dataLength)
            {
                Console.WriteLine("数据接收不齐.");
                return(null);
            }

            message.Message = binaryReader.ReadBytes(dataLength);

            binaryReader.Close(); //关闭二进制读取器,是否资源
        }
        return(message);          //返回消息协议对象
    }