/// <summary> /// 解码 /// </summary> /// <returns></returns> public static Request Decode(ByteArray readBuff, uint conv) { //消息长度 if (readBuff.length <= 2) { return(null); } //消息体长度 int readIdx = readBuff.readIdx; byte[] bytes = readBuff.bytes; Int16 bodyLength = (Int16)((bytes[readIdx + 1] << 8) | bytes[readIdx]); if (readBuff.length < bodyLength) { return(null); } readBuff.readIdx += 2; //解析协议名 int nameCount = 0; string protoName = MsgHelper.DecodeName(readBuff.bytes, readBuff.readIdx, out nameCount); if (protoName == "") { Debug.Log("OnReceiveData MsgBase.DecodeName fail"); //Close(user); return(null); } readBuff.readIdx += nameCount; //解析协议体 int bodyCount = bodyLength - nameCount; if (bodyCount < 0) { Debug.Log("OnReceiveData fail, bodyCount <0 "); //Close(user); return(null); } byte[] msg = DecodeBody(readBuff.bytes, readBuff.readIdx, bodyCount); readBuff.readIdx += bodyCount; readBuff.CheckAndMoveBytes(); Request request = new Request(); request.Conv = conv; request.Name = protoName; request.Msg = msg; Debug.Log(request.Name); return(request); }