Форум: "Сети";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
ВнизИспользование буфера при ClientRead. Найти похожие ветки
← →
Новичёк (2004-03-30 17:19) [0]Уважаемые Мастера, есть процедура обработки события сокета 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;
???
Непонятно...
← →
Reindeer Moss Eater © (2004-03-30 17:27) [1]Для твоей процедуры это одно и тоже.
← →
Digitman © (2004-03-30 17:29) [2]сам-то как думаешь ?
← →
Новичёк (2004-03-30 17:30) [3]Думаю, что это зависит от того, какой величины пакеты разрешены в данной подсети. Так?
← →
Новичёк (2004-03-30 17:32) [4]
> Reindeer Moss Eater
А вот и нет :-( Даю разные команды на сервер, в одних случаях приходит ответ полностью, в других - частями.
← →
Digitman © (2004-03-30 17:33) [5]
> Новичёк
на момент начал выполнения любого из представленных вариантов переменная Buffer у тебя всегда будет = "", ибо она локальная
буфер накопления в дан.случае имеет смысл, если он НЕ локальный
← →
Reindeer Moss Eater © (2004-03-30 17:33) [6]Вот именно
← →
Новичёк (2004-03-30 17:53) [7]
> Digitman
Проверил. Вы, как всегда, правы. Странно всё-таки работает буфер клиента сокета.
← →
Digitman © (2004-03-31 08:29) [8]
> Новичёк
> Странно всё-таки работает буфер клиента сокета
что ж странного ? транспортный протокол-то используется здесь поточный
вот событием OnRead гнездо и извещает тебя, что поток не пуст, и тебе следует как-то отреагировать на сей факт ... ты вправе выбрать из вх.потока все что там есть на этот момент, и так же вправе выбрать ровно столько, сколько ожидаешь (но не более того что есть во вх.потоке на момент обработки события)
ReceiveText выбирает из вх.потока все что там есть , без разбору
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.035 c