public static object msgunpack(PacketStream packet, out int msgno)
    {
        byte[] recv = packet.Buffer;
        msgno = recv [0] << 24 | recv [1] << 16 | recv [2] << 8 | recv [3];

        MemoryStream stream = new MemoryStream(recv, 4, packet.Size - 4);

        Type type = MsgType.Instance().getMsgType(msgno);

        if (type != null)
        {
            object obj = ProtoBuf.Serializer.NonGeneric.Deserialize(type, stream);
            return(obj);
        }
        return(null);
    }