![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Асинхронные сообщения сокетов! [D6, Win95/98, WinXP]
FireMan_Alexey © (2004-04-06 14:15:00)Ув. мастера!
Хочу спросить, почему когда приходит сообщение FD_READ и если я не забираю информацию Recv-ом, то больше сообщений не приходит!!! Т.е. как бы приходящие пакеты склеиваются и заносятся в буфер, который может быть до 64К, а если я посылаю 200 байт с промежутком в 0,5 секунды то пока я не обработаю один второй я не получу!
FireMan_Alexey (2004-04-07 11:10:00) [1]Вообще-то с FD_WRITE я сам напутал!
Спасибо за помощь!
Verg (2004-04-06 15:36:00) [2]Насчет FD_CLOSE - легко. Пока есть вовсе необработанные данные, FD_CLOSE не постится на очередь сообщений сокета. Первый же recv вызовет его пост, если соедиение к этому времени было уже закрыто собеседником.
А вот с FD_WRITE - чет-то я сомневаюсь.
Polevi (2004-04-06 15:26:00) [3]код
FireMan_Alexey (2004-04-06 15:25:00) [4]Дело в том, что сообщения FD_CLOSE и FD_WRITE тоже не приходят!
Verg (2004-04-06 14:34:00) [5]
> почему когда приходит сообщение FD_READ и если я не забираю
> информацию Recv-ом,
Так и должно быть, если ты вообще нисколько не забираешь, ни быйтика.
Механизм простой, если "на пальцах", то:
1. С сетевого уровня пришла порция, a буфер применика пуст - ставим FD_READ
2. Вызывается rcv, но она забирает не все данные - ставим FD_READ