Ru-MaNGOS

Вернуться   Ru-MaNGOS > Ядро > Опкоды, Формулы, Клиент

Важная информация

Опкоды, Формулы, Клиент Разбор и изучение взаимодействия клиента с сервером

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.07.2010, 17:20   #1
RomanRom2
WowCore Dev
 
Аватар для RomanRom2
 
Регистрация: 31.03.2010
Сообщений: 468
Сказал(а) спасибо: 73
Поблагодарили 106 раз(а) в 70 сообщениях
RomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всемRomanRom2 Это имя известно всем
По умолчанию

господа, поступило шикарное предложение по формату чанка:

(byte)Direction;
(uint)UnixTime
(uint)TickCount
(uint)Data.Length
(uint)DD.Length
(byte[])Data
(byte[])DD

как вам?
при этом хидер читается структурой, что удобно само по себе.
после хидера идут данные опкода.
после данных опкода идут DevelopersData, если DD.Length больше нуля.
в данном варианте сведены к минимуму все затраты и DD стал переменной длины, что тоже должно всех устроить.

правда в этом случае, к великому сожалению Константина, (uint)Data.Length будет содержать данные вместе с опкодом, а Data данные вместе с опкодом. ну в прочем это само по себе и вытекло бы, как ни крути.

хех. вон VDm предлагает ту же идею и с хидером снифа.

Последний раз редактировалось RomanRom2; 25.07.2010 в 17:24.
RomanRom2 вне форума   Ответить с цитированием
Старый 25.07.2010, 18:29   #2
user456
Новичок
 
Регистрация: 31.03.2010
Сообщений: 22
Сказал(а) спасибо: 2
Поблагодарили 23 раз(а) в 8 сообщениях
user456 На верном пути
По умолчанию

Цитата:
Сообщение от RomanRom2 Посмотреть сообщение
господа, поступило шикарное предложение по формату чанка:

(byte)Direction;
(uint)UnixTime
(uint)TickCount
(uint)Data.Length
(uint)DD.Length
(byte[])Data
(byte[])DD
Да, если слишком кратко излагать - не доходит. Развернуто:
struct main_hdr{
int sign;
uint pkt_hdr_offset;
uint pkt_hdr_len;
uint data_offset;
...
}

struct pkt_hdr_node{
int len;
char [50] name;
}

потом с адреса pkt_hdr_offset забиваеш массив и получаеш свои типы, можно по name разбор делать или добавить константы типа. Получится структура велосипеда, который давно изобрели в каком-нибудь DBase.
Один фиг через год станет понятно что UnixTime в каждом пакете это мусор (достаточно тиккаунтов на четверо суток в миллисекундах и даты создания файла или одного time в хедере)
user456 вне форума   Ответить с цитированием
Старый 25.07.2010, 18:43   #3
VDm
Новичок
 
Регистрация: 22.05.2010
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 3 раз(а) в 1 сообщении
VDm На верном пути
По умолчанию

Цитата:
Сообщение от user456 Посмотреть сообщение
Да, если слишком кратко излагать - не доходит.
Сложно, если это кому-то потребуется, пусть задает optionalData, а там - что угодно и сколько угодно.
VDm вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Текущее время: 09:17. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot