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); //返回消息协议对象 }