Их разыскивают бойцы 139-го порта!

Xakep, номер #037, стр. 037-071-1

Внимание!!! Пример, написанный в Kylix, прекрасно работает в Delphi.

Horrific aka Фленов Михаил (smirnandr@mail.ru) http://www.cydsoft.com/vr-online/

Сегодня я решил рассказать тебе что-нибудь из сетевого программирования. Так как эта тема уж точно понравится любому ветерану 139-го порта. Сегодня я тебя познакомлю с новой сетевой библиотекой Indy, которая появилась только в Kylix 1 и Delphi6. Так что если ты захочешь повторить этот пример под окна, то тебе понадобится Delphi не менее 6-й версии.

Напутствие

Со всей библиотекой Indy я тебя сегодня не смогу познакомить, но с одним из компонентов, входящих в его состав, мы разберемся. Немного посовещавшись с самим собой и твоими письмами, я выбрал для сегодняшнего примера компонент IdWhois. На страницах Х мы часто посылаем тебя... (не подумай ничего плохого) на www.ripn.net, где можно воспользоваться сервисом WhoIs. Он позволяет узнать подробную инфу о любом имени домена в Инете.

Воспользоваться сервисом WhoIs достаточно просто, но только в твоем ишачке IE. А как было бы хорошо, если бы у тебя была своя программа, чтобы больше никогда не приходилось лазить по серверам типа www.ripn.net или www.nic.ru. Ничего, сегодня у тебя появится такая прога. А главное, затраты на это дело - минимальны.

Готовность №1

Брось на форму один компонент TEdit, одну кнопку TButton и один компонент TMemo (я его назвал ResultMemo). Переименуй свойство Caption у кнопки на "Найти". В компонент TEdit мы будем вводить имя домена, информацию о котором мы хотим получить. После нажатия кнопки в компоненте TMemo будет появляться все, что наша прога сможет пронюхать в Инете про указанный домен.

Внешний вид формы готов, теперь пора приступить к реализации нашей задумки. Как это сделать? Ты думаешь, ручками? Куда там. Ручками ты будешь работать в туалете, крича "Занято", или на других языках программирования. Мы же будем наслаждаться компонентом IdWhois. Найди закладку "Indy Clients" на палитре компонентов и брось на форму компонент IdWhois с этой закладки (у меня он последний по счету).

Анатомия whois

Выдели компонент IdWhois и перейди в объектный инспектор. Взгляни на свойство Host. Здесь ты указываешь адрес сервера, у которого есть сервис WhoIs. Точнее сказать, ты должен указать именно на этот сервис. По умолчанию стоит адрес whois.internic.net. Я думаю, что его менять не надо, потому что он достаточно рабочий и очень быстрый. Но если ты решишь изменить этот адрес, то обязательно проверь, какой используется порт у твоего любимчика. Если отличный от 43, то ты должен изменить свойство Port у компонента IdWhois.

В принципе настройки по умолчанию достаточно работающие для любых доменов в зоне COM, ORG и NET. Если тебя интересует что-то специфичное, то только в этом случае тебе может понадобиться смена сервера WhoIs.

Шкодинг

В программировании компоненты Indy так же просты, как и в настройке. Создай обработчик события OnClick для кнопки и напиши в нем содержимое листинга 1. А я тебе расскажу обо всем, что в нем происходит.

В первой строке я очищаю содержимое компонента TMemo, чтобы избавиться от текста, оставшегося от предыдущих поисков. Во второй строке кода я запускаю поиск. Для этого я выполняю метод WhoIs компонента IDWhoIs:

Содержание  Вперед на стр. 037-071-2

ttfb: 3.4570693969727 ms