![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Маленький вопрос по приему в soket
grvakh © (2002-11-26 14:37:00)Если в событии onRead пришло меньше байт, чем надо и я их НЕ считал, то они пропадают или как?
Можно ли просто дождаться следующего события и считать всё сразу?
(Как правильно - я знаю. читать что есть в массив байт с нужной позиции.
z:bufvar; br:integer; // byte read
zb:array[...] of byte absolute z;
и т.д. и т.п. )
Slym (2002-11-27 06:31:00) [1]Протокол свой придумай - типа HTTP.
Сначала короткий заголовок (что, куда и сколько)
А потом читай в буфер хоть N раз пока не придет "сколько" байт и лепи их в один.
Digitman (2002-11-26 15:09:00) [2]а какой там "ритм" ?)
представь себе очередь за водкой горбачевских талонных времен.
мужики встают в очередь намертво, т.е. пока не отоварят свои талоны, хрен из очереди уйдут)
а продавец - один. захочет - сразу троих обслужит, захочет - одного, захочет - вообще хрен кого обслужит.
а очередь как стояла , так и стоит "до победного конца", пока водка не кончится))) ... или талоны))))
grvakh (2002-11-26 14:59:00) [3]Cпасибо. Оч. хор., что так.
Естественно, считать необходимую порцию, а там, глядишь, и "ритм восстановится".
grvakh
Digitman (2002-11-26 14:40:00) [4]
> Если в событии onRead пришло меньше байт, чем надо и я их
> НЕ считал, то они пропадают или как?
Нет, не пропадают.
> Можно ли просто дождаться следующего события и считать всё
> сразу?
Не можно, а нужно ! Только не "всё сразу", а ровно столько, сколько тебе не достает для "полного счастья" именно в данный момент времени - в момент обработки тек.события OnRead()