Re: Сообщения не доходят
От: Аноним  
Дата: 13.03.05 11:16
Оценка:
Здравствуйте, Agile, Вы писали:

A>Я через рабочую нить откидываю 3 сообщения на сервер.(сокеты созданы по-умолчанию — в блокированном режиме), но на сервер почему-то доходят иногда все, иногда 2-е, иногда 3-е сообщение. Что это может быть?


A>з.ы. если же я поставлю Sleep(100) в рабочей нити после каждого send'a, то все доходит.

A>з.ы. Windows XP sp2, VS7.1, LAN

Вероятно, вы считаете(нумеруете) сообщения таким образом, что каждый вызов функции send(...) для клиента соответствует одному исполнению функции recv(...) для сервера, т.е. когда из вашей основной нити программы идет отправка сообщений подряд... На сервер они приходят в один буфер, и читаются из него поточно(независемо от количества send-ов), т.е. образом, вы отсылаете не "сообщения", а части(пакеты) одного непрерывного потока. Для испраления такого рода ошибки обычно используют 3 подхода:
1. сообщения имеют строго определнный размер, а recv(...), соответсвенно, принимает указанное количество байт(записей);
2. вводится спциальный символ-разделитель, при чтении которого из буфера, происходит разделение на сообщения;
3. при отправке/приеме в/из буфер/а сперва пишется/читается количество байт(записей) необходимое для одного сообщения.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.