Суббота, 04.05.2024
Королевство Delphi
Главное меню
Статьи
Наш опрос
Нравится раздел статьи?
Всего ответов: 68
Статистика
Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » Статьи » Система » Компоненты

Компоненты Internet Direct (Indy). Вводная статья для новичков

Если в двух словах, Indy — компоненты для удобной работы с популярными интернет-протоколами. Принцип их работы основывается на использовании сокетов в блокирующем режиме. Indy интересен и удобен тем, что достаточно сильно абстрагирован. И программирование в Indy сводится к линейному программированию. Кстати, в интернете широко распространена переводная статья, в которой есть слова "блокирующий режим не является дьяволом" :)) В свое время меня очень позабавил этот перевод. Статья — часть книги Хувера и Харири "Глубины Indy". В принципе, для работы с Indy вам вовсе не обязательно всю ее читать, но ознакомиться с принципами работы протоколов интернета я все-таки рекомендую. Что касается "дьявольского" режима. Вызов блокирующего сокета действительно не возвращает управления, пока не выполнит свою задачу. Когда вызовы делаются в главном потоке, интерфейс приложения может "подвиснуть". Чтобы позволить избежать этой неприятной ситуации, разработчики индей создали компонент TIdAntiFreeze. Достаточно просто кинуть его на форму — и пользовательский интерфейс будет преспокойно перерисовываться во время выполнения блокирующих вызовов.

Вы наверняка уже ознакомились с содержимым различных закладок "Indy (...)" в Delphi. Компонентов там немало, и каждый из них может быть полезным. Я сама работала далеко не со всеми, так как не вижу надобности их изучать без определенной задачи.

В базовый дистрибутив Delphi входят Indy v.9 с копейками. Наверное, желательно сразу сделать обновление до более новой версии (например, у меня сейчас 10.0.76, но есть и более поздние, вроде).

Есть клиентские и серверные компоненты для работы с одними и теми же протоколами. Indy реально упрощают разработку приложений, в отличие от варианта разработки того же самого функционала на сокетах. Например, чтобы установить связь с сервером, вы должны просто-напросто вызвать метод Connect. Успешное установление соединения ознаменуется возвратом из метода без возникновения эксепшена. Если же соединение неызовется установится — вызовется исключение.

"Академический" пример (код не рабочий, не запускайте :) ):

with IndyClient do 
begin
 Host := 'test.com';
 Port := 2000;
 Connect; 
 Try
 // работа с данными (чтение, запись...)
 finally 
 Disconnect; 
 end;
end;

Host и port могут быть установлены в инспекторе объектов или в рантайме.

Для чего же можно использовать компоненты Indy в задачах парсинга? Применение разнообразно! Самое простое — получение содержимого страницы (с этим уже все, наверное, сталкивались) с использованием компонента IdHTTP:

var
 rcvrdata: TMemoryStream;
 idHttp1: TidHttp;
begin
 idHttp1 := TidHttp.Create(nil);
 rcvrdata := TMemoryStream.Create;
 idHttp1.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 5.5; Windows 98)';
 idHttp1.Request.AcceptLanguage := 'ru';
 idHttp1.Response.KeepAlive := true;
 idHttp1.HandleRedirects := true;
 try
 idHttp1.Get(Edit1.Text, rcvrdata);
 finally
 idHttp1.Free;
 end;
 if rcvrdata.Size > 0 then begin
 ShowMessage('Получено ' + inttostr(rcvrdata.Size));
 rcvrdata.SaveToFile('c:\111.tmp');
 end;
 rcvrdata.Free;
end;

Как видно, можно не только получить содержимое страницы, но и имитировать загрузку документа с определенного клиента. Компоненты Indy вообще удобны для формирования заголовков и POST-запросов. Об этом с примерами в следующий раз.

Получить ссылку на материал

Категория: Компоненты | Добавил: Барон (20.12.2011)
Просмотров: 1375 | Теги: компонент, Indy, Internet Direct | Рейтинг: 0.0/0
[ Пожертвования для сайта ] [ Пожаловаться на материал ]

Если вам помог материал сайта кликните по оплаченной рекламе размещенной в центре

Поиск
Категории раздела
ActiveX [10]
CORBA и COM [16]
Kol и MCK [23]
WinAPI [28]
Компоненты [27]
Работа с Bluetooth [4]
Железо [8]
Текст [18]
Разное [98]
Королевство Delphi © 2010-2024
Яндекс цитирования