/// <summary> /// 解析数据,将byte[]转换为CSPKG数据结构 /// </summary> /// <param name="handler"></param> /// <returns></returns> public static System.Object UnpackDGMsg(byte[] data, int recvLength, ref int parsedLength) { parsedLength = 0; if (recvLength >= sizeof(uint) * 2) { System.IO.MemoryStream stream = new System.IO.MemoryStream(data, 0, sizeof(uint)); System.IO.BinaryReader binaryReader = new System.IO.BinaryReader(stream); // 整个包的长度 int packetLen = (int)binaryReader.ReadUInt32(); if (recvLength < packetLen) { return(null); } // 整个包 byte[] packet = new byte[packetLen]; System.Buffer.BlockCopy(data, 0, packet, 0, packetLen); // 过滤 byte[] finalPacket = LoginMgr.Instance.FilterReceivedBytes(packet); // 反序列化 net.DGPKG msg = new net.DGPKG(); msg.doDeserialize(finalPacket); parsedLength = packetLen; return(msg); } return(null); }
/// <summary> /// 解析数据,将byte[]转换为CSPKG数据结构 /// </summary> /// <param name="handler"></param> /// <returns></returns> public static System.Object UnpackDGMsg(byte[] data, int recvLength, ref int parsedLength) { parsedLength = 0; if (recvLength >= sizeof(uint) * 2) { System.IO.MemoryStream stream = new System.IO.MemoryStream(data, 0, sizeof(uint) * 2); System.IO.BinaryReader binaryReader = new System.IO.BinaryReader(stream); uint needLen = binaryReader.ReadUInt32(); if (recvLength < needLen) { return(null); } net.DGPKG msg = new net.DGPKG(); msg.doDeserialize(data); // if (msg.header.msg_full_name == typeof(AccountLoginRsp).FullName) // { // AccountLoginRsp tmp = (AccountLoginRsp)msg.body; // //s_account = tmp.account; // LoginMgr.Instance.s_uid = tmp.uid; // s_sessionid = tmp.sessionid; // } parsedLength = (int)msg.totalLength; return(msg); } return(null); }