Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2011.03.27;
Скачать: [xml.tar.bz2];

Вниз

Обработчик прихода данных для TIdTCPClient   Найти похожие ветки 

 
Alik   (2009-03-01 16:52) [0]

Добрый день,

Столкнулся с проблемой создания обработчика поступления данных для INDY компоненты TIdTCPClient. В TIdTCPServer есть такая обработка - OnExecute.

Пробовал например так, в событии Таймера делаю
TIdTCPClient.Readln, работает, но когда буффер пустой появляется  исключение. Как блокировать это исключение или
можно ли узнать есть ли что-нибудь в буфере перед тем как вызвать Readln?


 
Сергей М. ©   (2009-03-01 17:33) [1]


> Пробовал например так, в событии Таймера делаю


Убирай таймер совсем.
Он здесь ни с какого боку не нужен.

Читай сюда:


 
Сергей М. ©   (2009-03-01 17:33) [2]

http://www.indyproject.org/docsite/html/frames.html?frmname=topic&frmfile=TIdTCPServer_OnExecute.html


 
Eraser ©   (2009-03-01 17:39) [3]

> [0] Alik   (01.03.09 16:52)


> можно ли узнать есть ли что-нибудь в буфере перед тем как
> вызвать Readln?

IOHandler.CheckForDataOnSource
IOHandler.InputBuffer
       OutboundClient.IOHandler.InputBuffer.ExtractToBytes(bData);
       if Length(bData) > 0 then
       begin
         //
       end;


 
Alik   (2009-03-02 11:33) [4]

> Eraser ©   (01.03.09 17:39) [3]

IOHandler.CheckForDataOnSource
IOHandler.InputBuffer
      OutboundClient.IOHandler.InputBuffer.ExtractToBytes(bData);
      if Length(bData) > 0 then
      begin
        //
      end;

А где находится методы IOHandler.CheckForDataOnSource, IOHandler.InputBuffer и OutboundClient для IdTcpClient?


 
Alik   (2009-03-02 11:35) [5]


> Сергей М. ©   (01.03.09 17:33) [2]
> http://www.indyproject.org/docsite/html/frames.html?frmname=topic&frmfile=TIdTCPServer_OnExecute.
> html


По данной ссылке нашел инфу по IdTCPServer, а нужно для Сlient!


 
Сергей М. ©   (2009-03-02 12:07) [6]


> Alik   (02.03.09 11:35) [5]



> а нужно для Сlient


А какого же лешего тогда упоминаешь


> В TIdTCPServer есть такая обработка - OnExecute


?


 
Alik   (2009-03-02 12:38) [7]

> Сергей М.

А может ли вообще Client узнать, что у него пришли данные во входящий регистр не вызывая функций чтения Readln и др., которые в случае отсутствия данных вываливают сообщение о таймауте.

Можно ли как то кастрировать это сообщение? нету данных ну и работай в нормальном режиме дальше без предупреждений!


 
Сергей М. ©   (2009-03-02 13:00) [8]


> Можно ли как то кастрировать это сообщение?


Можно.
Заключи жертву кастрации в блок try..except


 
Eraser ©   (2009-03-02 13:44) [9]

> [4] Alik   (02.03.09 11:33)


> А где находится методы

в IOHandler.


 
Eraser ©   (2009-03-02 13:45) [10]

> OutboundClient для IdTcpClient

OutboundClient это и есть TIdTcpClient.


 
Alik   (2009-03-02 17:11) [11]

Eraser ©   (02.03.09 13:45) [10]
> OutboundClient для IdTcpClient

Да, но метод IdTcpClient.IOHadler.CheckForDataOnSource не доступен!

Компидятор пишет - "Undeclared identifier CheckForDataOnSource"


 
Eraser ©   (2009-03-02 19:08) [12]

> [11] Alik   (02.03.09 17:11)

возможно у тебя более старая версия Indy. вот исходник этой функции
function TIdIOHandler.CheckForDataOnSource(ATimeout: Integer = 0): Boolean;
begin
 // return whether at least 1 byte was received
 Result := False;
 if Connected then begin
   Result := ReadFromSource(False, ATimeout, False) > 0;
 end;
end;


 
Alik   (2009-03-02 20:26) [13]

> Eraser ©   (02.03.09 19:08) [12]

Удивительно, но осутствует даже метод IDTCPCLient1.IOHandler.ReadFromSource !

Видимо я капитально отстал от жизни (

А можно где скачать free обновленные компонентки?


 
Eraser ©   (2009-03-02 20:47) [14]

> [13] Alik   (02.03.09 20:26)

можно скачать Делфи 2009 )


 
DVM ©   (2009-03-02 22:13) [15]


> Alik   (02.03.09 12:38) [7]


> А может ли вообще Client узнать, что у него пришли данные
> во входящий регистр не вызывая функций чтения Readln и др.
> , которые в случае отсутствия данных вываливают сообщение
> о таймауте.

Не может, инди - это синхронные блокирующие сокеты, они вообще не вписываются в событийную модель Windows.



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

Форум: "Сети";
Текущий архив: 2011.03.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.004 c
2-1293463778
Mitroshin
2010-12-27 18:29
2011.03.27
Возможно ли использовать строку STFilter в TDBGridEh как Edit-ы?


15-1290889921
set
2010-11-27 23:32
2011.03.27
Атрибуты на папках


2-1293459918
Дмитрий С
2010-12-27 17:25
2011.03.27
Отключить питание.


15-1291997404
alexdn_
2010-12-10 19:10
2011.03.27
Картинка в php


6-1217761959
Ruzzz
2008-08-03 15:12
2011.03.27
Добавление в программу  «Работа через proxy - сервер»





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский