![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Что-то непонятное с TidTCPServer и TidTCPClient [D5, D6, D7, Win95/98, NT4, Win2k, WinXP]
Lucifer © (2004-07-25 17:35:00)В общем такая ситуация:
Есть клиент который посылает запрос на сервер (команду)
Сервер начинает работать - при этом назад возвращает постоянно данные, Клиент выводит их в Memo.
Когда завершается работа сервера - посылает строку EOF и клиент дисконнектится
Вот куски кода:
Клиент:
--------------------
Client.Connect;
Client.WriteLn('COMMAND');
while TRUE do begin
s:=Client.ReadLn;
Memo1.Lines.Add(s);
Application.ProcessMessages;
if s='EOF' then break;
end;
Client.Disconnect;
----------------------
Сервер:
Выполняет различные действия и при этом постоянно отсылает клиенту состояние такой процедурой:
-------------------
procedure sendstr(AThread: TIdPeerThread;s:String);
begin
AThread.Connection.OpenWriteBuffer;
AThread.Connection.Writeln(s);
AThread.Connection.CloseWriteBuffer;
end;
--------------------
Проблема в том что сервер отрабатывет до конца (веду логи) - но клиент не все принимает - причем каждый раз может "застрять"
на разном месте - иногда и до конца отрабатывает
Клиент и сервер стоят на одном компе
Lucifer (2004-07-27 13:34:00) [1]Да через поток все пошло
а вот
S := Client.ReadLn('', <значение таймаута в милисек>);
не помогло
MetalFan (2004-07-26 16:25:00) [2]
> s:=Client.ReadLn;
S := Client.ReadLn('', <значение таймаута в милисек>);
или вынеси в отдельный поток
Lucifer (2004-07-25 17:41:00) [3]Да и чуть не забыл - когда клиент ждет сообщение по ReadLn он загружает процессор на полную - должно ли так быть?