Итого опишу задачу: Сервер посылает блок данных большой, разом, одним куском. Клиент при приеме почему то получает эти данные кусками, хотя сервер ничего не режет а посылает одним блоком. Для правильной обработки данных Клиентом ему надо получить весь блок данных, а потом обработать. Вопрос... каким образом можно определить сколько данных надо принять и надо ли их дальше принимать если сервер послал целый пакет а клиент принимает его кусками... Таким пакетов может быть много так что надо как то определить это всё куски одно и того же пакета или это новый пакет. Сокеты блокирующие принимаю функцией recv... отправка просто send
сделайте маркер начала/конца пакета, и можете указать в нем размер пакета. лучше слать пакеты малого размера. если Вы отправите через сокет файл, скажем, в 100 Кб, то тому, кому Вы посылали этот блок, придет несколько блоков с размерами, которые зависят от трафика и загруженности линии. Причем, размеры не обязательно будут одинаковыми. Отсюда следует, что для того, чтобы принять файл или любые другие данные большого размера, Вам следует принимать блоки данных, а затем объединять их в одно целое (и сохранять, например, в файл).
Да это логично, только это невозможно... то бишь сервер переделывать нельзя... Вот я и хотел узнать... реально ли как нибудь собрать пакет зная что кусок это его продолжение а не новый... ведь send шлет конкретную длинну... и я как то думал что это дело тсп/ип вообще собирать пакеты +) есть идеи?
2slow Да нильзя ничего с сервером делать нельзя там используеться обычный send и всё... 2A_Must_Loll Знаю его отлично и досканально... и соотсвенно определяю когда надо ещё принять информацию но иногда бывают коллизии когда НЕВОЗМОЖНО понять конец это или нет.... то бишь ты понимаешь что конец пакета и ждешь новый а на самом деле он просто не хорошо "порвался"
Хм я это прекрасно реализовал на delphi в начала надо добавить 4 байта на размер пакета(они зарезервированы), а ни приемной стороне ждать этих 4 байт и потом уже точно знаешь сколько придет в этом пакете. Т.е. что-то вроде своего потокола. Если хотите исходники на delphi то качаем с форума http://callipso.15ru.net в разделе Сервер. Там это все есть + расширенный протокол.