Форум программистов, компьютерный форум, киберфорум
ActionScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
16 / 16 / 6
Регистрация: 04.03.2014
Сообщений: 160

Куски пакета от сервера: правильное их соединение и обработка.

25.08.2016, 19:15. Показов 1253. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Столкнулся с такой неприятной проблемой. Клиент отправляет на сервер данные, которые обрабатываются на сервере и с ними идет дальнейшая работа. Пакет приходит таким образом
Первые 2 байта тип, 4 байта длина и дальше уже сам объект, в итоге получается что-то вроде такого
@#$@$#{тут json объект}
Бывает так, что пакеты склеиваются, к примеру приходит так
@#$@$#{тут json объект}@#$@$#{тут json объект}@#$@$#{тут json объект}
С этим тоже вопрос был решен и склееные пакеты парсятся.
Буквально недавно, выявилась другая проблема. Приходит ответ от клиента таким образом
@#$@$#{тут json объект обрезается и скобка не закрыта, парсер выдает ошибку, т.к json объект по каким-то причинам неполный. Следующий кусок от клиента приходит такой
недостающий кусок предыдущего json объекта}@#$@$#{json объект} бывает так, что новый json объект тоже приходит куском и остальная его часть приходит только при следующем пакете от клиента. В чем проблема может быть? Как ее решить?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.08.2016, 19:15
Ответы с готовыми решениями:

Дробление текста на куски, куски в переменные
Добрый день, запутался совсем с решением задачи. Имеется текст, структура текста повторяющаяся, напоминает повторяющиеся элементы с...

Правильное соединение АЦП и ЦАП в Multisim 13
Разрабатываю одну интересную штуковину и решил сначала замоделить в Multisim. Никак не могу понять как правильно соединить АЦП с ЦАП ...

Обработка пакета
Добрый день. Хочу доработать программу по приему пакетов по UDP протоколу. Есть прием пакета, откуда, от кого, по какому протоколу,...

5
 Аватар для Nikto
156 / 138 / 51
Регистрация: 28.11.2009
Сообщений: 460
Записей в блоге: 14
25.08.2016, 19:55
MrDead, это естественное поведение TCP пакетов, вы же их используете, верно? Вам нужно добавить каждому пакету символ конца. Приходящие пакеты хранить где-нибудь, и не парсить их до тех пор пока в очередном пакете не будет найден символ конца пакета.
Например (! - символ конца пакета):
@#$@$#{тут json объект}!@#$@$#{тут json объект}!@#$@$#{тут json объект}!

Вот таким образом вы легко сможете разделить ваши данные на сервере.
1
16 / 16 / 6
Регистрация: 04.03.2014
Сообщений: 160
25.08.2016, 20:15  [ТС]
Спасибо. В теории вроде идея годная, попробую реализовать такую схему.
0
 Аватар для Грот
15 / 15 / 2
Регистрация: 08.02.2013
Сообщений: 198
21.09.2016, 07:21
Цитата Сообщение от Nikto Посмотреть сообщение
Вам нужно добавить каждому пакету символ конца
Зачем, если в шапке пакета указана его длинна?
0
 Аватар для Nikto
156 / 138 / 51
Регистрация: 28.11.2009
Сообщений: 460
Записей в блоге: 14
21.09.2016, 11:48
Цитата Сообщение от Грот Посмотреть сообщение
Зачем, если в шапке пакета указана его длинна?
Чтобы знать пришёл ли нам полный пакет или его часть.
С чего вы взяли, что это длина всего пакета, а не его части?
0
16 / 16 / 6
Регистрация: 04.03.2014
Сообщений: 160
22.09.2016, 19:51  [ТС]
Всё верно. Нет гарантии, что длина пакета, это готовый массив, иначе бы не пришлось добавлять знак для распознания его целостности.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.09.2016, 19:51
Помогаю со студенческими работами здесь

Обработка бинарного пакета
Здравствуйте. Сразу пардон за левый вопрос. Итак, сервер раздаёт бинарные файлы. Внутри каждого по одной структуре. Я ловлю этот...

Правильное удаление дополнительного сервера
Доброго времени суток! Существует ли правильный способ удаления дополнительного сервера Domino из настроек основного? Спасибо!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru