Re[2]: TCP IP очередь запросов...
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 19.05.05 09:17
Оценка: 1 (1)
Здравствуйте, CrystaX, Вы писали:

CX>Здравствуйте, -Cheese-, Вы писали:


C>>Вот назрел такой вопрос пишу сервер, кот. слушает по определённому порту клиента.

C>>Работа в режиме запрос-ответ.
C>>Иногда возникают ситуации, когда приходит запрос и готовится на него ответ, за это время клиент может ещё слать мне запросы.... Так вот после ответа приходят ко мне запросы, а вернее сказать запрос который есть склееные запросы к серверу за время пока отвечал сервер... а это не есть хорошо

Это вообще фундаментальная особенность TCP-трафика: пакеты, которые на отправляющей стороне отсылаются отдельно, поступать могут на принимающую сторону либо склеенными, либо наоборот -- разделенными на более мелкие части.

C>>Можно ли как-то это пофиксить? Чтоб они приходили в порядке очереди?


CX>TCP? Тогда маркер в конце каждого сообщения или размер сообщения в самом начале.

+1

Именно. Причем нужно будет позаботиться о буфере куда данные из канала поступают и там парсятся. Те данные, которые успешно распарсены из буфера изымаются. Остальны остаются ждать продолжения.

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

Лично я использую размер сообщения в его залоговке.

CX>Если UDP, то проблемы нет — приходящие дейтаграммы не склеиваются в одну. Правда, есть риск их потери.


C>>P.s.: многопоточность не подходит.

C>>P.s.1: MS VC++ ; MFC; в основе — берклиевский классический сервер.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.