Показать сообщение отдельно
Старый 16.01.2008, 16:16   #8
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Цитата:
Сообщение от st01en
У меня проскакивала идея, что несколько пакетов подряд склеиваются в один
собсно так и есть, причём ты ловиш TCP пакет, и в нем может быть как целое число пакетов линейки так и не целое, тоесть игровой пакет может начинаться в одном TCP пакете а заканчиваться в другом
вобщем логика твоих действий должна быть примерно такой:
при поступлении пакета ты добавляеш его в буфер, а затем начинаеш из буфера вытаскивать игровые пакеты читая первые два байта в которых указана длинна пакета, а затем оставшиеся байты согласно размеру который тока что узнал (за вычетом уже прочитанных 2х байт), далее удаляеш из буфера прочитанный пакет, обрабатываеш его и если в буфере ещё есть данные опять читаеш два байта в которых указан размер следующего пакета и если в буфере есть ещё стока байт то опять читаеш оставшиеся, а если в буфере осталось меньше данных чем указано, значит остаток пакета ещё не пришёл поэтому надо ждать нового TCP пакета чтоб добавить его данные в конец буфера ну а дальше всё по старому)

Добавлено спустя 1 минуту 25 секунд:
кстати некоторые сниферы могут один и тот же TCP пакет выдавать дважды подряд иногда, при этом естественно тоже всё собьётся так что если будет наблюдаться такое явление то придётся ещё фильтр повторов сделать...
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием