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

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

Что-то непонятное с 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 он загружает процессор на полную - должно ли так быть?


Наверх

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