Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.04;
Скачать: CL | DM;

Вниз

WinSock SEND,RECV слепляются команды   Найти похожие ветки 

 
VadimX   (2005-08-29 18:56) [0]

Передаю данные через WinSock
через SEND RКУС
если после SEND ставить задержку sleep(200);
То все работает, как должно.
Если задержку не ставить, то несколько последовательных
Команд SEND воспринимаются как _ОДНА_ RECV
и в буфере лежат друг за другом.
Если Поставить в SEND,RECV флаг MSG_OOB то не отсылается совсем.


 
Суслик ©   (2005-08-29 19:18) [1]


> Команд SEND воспринимаются как _ОДНА_ RECV

так и должно быть
читай доку по winsock в msdn.


 
Суслик ©   (2005-08-29 19:24) [2]

Более того, recv могут прийти не все данные при одном вызове recv.

Т.е. ты посылал 100 байт, а прийдут они двумя порциями
50 байт при первом вызове recv
50 байт при втором.

Тебе нужно придумывать свой протокол, который позволит корректно читать данные. Например первыми 4 байтами передавать длину сообщения.

Алгоритм:
1 Сначала читаешь 4 байта. Замечу, что они тоже (теоретически) могут прийти порциями (например, 2 и 2 байта).
2 Читать столько байт, сколько указано в первых 4 байтах. Пока не будет прочитано все считать, что чтение не полное и читать еще раз (в цикле).



Страницы: 1 вся ветка

Текущий архив: 2005.12.04;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.033 c
14-1131929101
Ученик чародея
2005-11-14 03:45
2005.12.04
Вернутся ли мне на форум?


3-1129813360
alexliv
2005-10-20 17:02
2005.12.04
group by через парметры


6-1124662253
Delphi_is_cool
2005-08-22 02:10
2005.12.04
WinSock. Как отправить файлы ?


14-1131993278
Антоха зарядник
2005-11-14 21:34
2005.12.04
написание 3D игр на PHP ищу книжку


14-1131796350
pedanto
2005-11-12 14:52
2005.12.04
А как в студии 2005 рюшечки на интерфейсе отключить?