Показать сообщение отдельно
Старый 14.01.2010, 23:05   #1
Пользователь
 
Аватар для mOBSCENE
 
Регистрация: 07.01.2008
Сообщений: 39
Сказал Спасибо: 11
Имеет 3 спасибок в 3 сообщенях
mOBSCENE
По умолчанию Как грамотно разлепить пакеты?

Есть библиотека внедряемая в волкер при запуске и ставящая перехват на connect, send и recv.
C send проблем никаких волкер шлет пакеты по одному с шифрованием проблем никаких.
Вот с recv проблемко, первый раз я расклеивание сделал таким образом при приходе пакета начинается цикл где по одному вытягиваются пакеты по считыванию из первых 2-х байт пакеты размера каждого и по одному расшифровываются и обрабатываются и копируются в другой отведенный для этого буфер, но проблема часто возникает с последним, он частенько проходит не до конца или половина или начало когда как..), я додумался только сделать так, сохранять это начало и ждать следующего пакета чтобы прочитать собственно эту радость до конца и уже добавлять этот кусочек уже к началу новоприбывшего пакета.
На первом сервере на который первый раз писалась эта библиотека было все на удивлению нормально. На днях переделал ее на другой серв, и начались проблемы, ненаю или сервер творчески любит нарезать пакеты, что иногда моя глупая нарезалка тут не справляется, погоду происходит некислое переполнение буфера волкера и он отказывается работать до перезапуска.

Подскажите способы как можно хорошо расклеивать пакеты чтоб не получалось таких переполнений, или ткните носов сорци пакет хака( пытлся на WebSVN найти, невышло ).

PS: сори за грамотейство.
__________________
Блекджек же без шлюх практически безопасен.
mOBSCENE вне форума   Ответить с цитированием