Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Использование буфера при ClientRead. [D7, WinXP]


Новичёк ©   (2004-03-30 17:19:00) 

Уважаемые Мастера, есть процедура обработки события сокета OnRead:

procedure TForm1.ClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
 Buffer: AnsiString;
begin
  Buffer := Client.Socket.ReceiveText;
end;

Вопрос:
Когда необходимо применять
      Buffer := Client.Socket.ReceiveText;
а когда
      Buffer := Buffer + Client.Socket.ReceiveText;
???
Непонятно...


Digitman   (2004-03-31 08:29:00) [1]


> Новичёк


> Странно всё-таки работает буфер клиента сокета


что ж странного ? транспортный протокол-то используется здесь поточный

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

ReceiveText выбирает из вх.потока всечто там есть , без разбору


Новичёк   (2004-03-30 17:53:00) [2]


> Digitman
Проверил. Вы, как всегда, правы. Странно всё-таки работает буфер клиента сокета.


Digitman   (2004-03-30 17:33:00) [3]


> Новичёк


на момент начал выполнения любого из представленных вариантов переменная Buffer у тебя всегда будет = '', ибо она локальная

буфер накопления в дан.случае имеет смысл, если он НЕ локальный


Reindeer Moss Eater   (2004-03-30 17:33:00) [4]

Вот именно


Новичёк   (2004-03-30 17:32:00) [5]


> Reindeer Moss Eater
А вот и нет :-( Даю разные команды на сервер, в одних случаях приходит ответ полностью, в других - частями.


Новичёк   (2004-03-30 17:30:00) [6]

Думаю, что это зависит от того, какой величины пакеты разрешены в данной подсети. Так?


Digitman   (2004-03-30 17:29:00) [7]

сам-то как думаешь ?


Reindeer Moss Eater   (2004-03-30 17:27:00) [8]

Для твоей процедуры это одно и тоже.


Наверх

Титульная страница Поиск, карта сайта Написать письмо