示例#1
0
    /// <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);
    }
示例#2
0
    /// <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);
    }