Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.06;
Скачать: CL | DM;

Вниз

TIdTCPClient - InputBuffer   Найти похожие ветки 

 
vers ©   (2005-07-22 18:59) [0]

Все тот же многострадальный TCP-чат на Indy. В этот раз на Indy 10 :) Клиент создает поток для прослушки сообщений от сервера, чтоб не тормозило прорисовка формы и делает там:

while not Terminated do
 begin
 msg:="";
 try
   msg:=cclient.ReadLn(#13#10,5);
 except
   on EIdReadTimeOut do ;
 end;
 If msg<>"" then
   begin
   ....
   end;
 end;

Глюки появляются наистраннейшие: пропадают в никуда самые разные сообщения от сервера. Видимо, где-то все-таки наглючил...
Решил убрать этот поток и повесить опрос на обычный таймер, а чтоб интерфейс не тормозил, делать не ReadLn, а предварительно проверять InputBuffer.Size. Но вот проблема, он обновляется не когда придут данные, а только тогда, когда я выполняю Read :( Вопрос: как обновить буфер, не выполняя Read? Ведь раз данные к клиенту пришли и где-то его ожидают, можно посмотреть их наличие заранее перед чтением, или нет?
Или может плюнуть на Indy и переделать чат, используя что-то другое?


 
Reindeer Moss Eater ©   (2005-07-22 22:01) [1]

Решил убрать этот поток и повесить опрос на обычный таймер

Там все методы синхронные.
Зачем там таймер?


 
vers ©   (2005-07-23 00:10) [2]

Угу... Я полежал немного, подумал... И решил все переделать под TClientSocket в асинхронном режиме. Код уменьшился раза в два и стал более понятным для меня :) А сервер остался тот же - IdTCPServer.
Насчет таймера - да, ни к чему :) Просто в демках от разработчиков Инди он есть, думал может с ним правильнее...



Страницы: 1 вся ветка

Текущий архив: 2005.11.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.05 c
8-1118391383
seregka
2005-06-10 12:16
2005.11.06
Объединение нескольких изображений в одно с добавлением текста


14-1128411337
dr Tr0jan
2005-10-04 11:35
2005.11.06
Измерение сопротивления с помощью осциллографа


6-1121972461
BBCHa
2005-07-21 23:01
2005.11.06
Создание письма в почтовой программе по умолчанию


2-1129215799
Fast2
2005-10-13 19:03
2005.11.06
Почему при выполнении пишет Transaction is active ?


2-1129380582
Vital
2005-10-15 16:49
2005.11.06
HTML