Продолжу традицию Horrific'a и напишу про исрользование компонентов ICS. Сегодня я опишу, как можно написать прогу, для определения IP адреса по символьному имени. Такая операция называется определение DNS имени.
Прочитав статью в декабрьском Хакере, я решил проинсталлить у себя этот пакет. До написания этой статьи, я хотел сделать цикл по сетевому программированию и первым в числе работ должен был стоять пингер. Как раз после прочтения той статьи желание делать это пропало.
На VB я использовал лишь стандартные средства и поэтому исходник получился мягко сказать громоздким. Теперь я решил заострить внимание на некоторых особенностях этого пакета и описать пару прог с использованием библиотек ICS.
Начнем с DNS Lookup. Эта программа нужна для определения IP-адреса, одниго или нескольких, по заданному адресу типа www.billgates.com.
Ссылку на библиотеку можно найти в разделе "Download", подраздел "Компоненты".
Для начала расположим компоненты на форме TextBox, MemoBox, WSocket из ICS и кнопку.
Добавляем в uses Winsock и WSocket и в const DNSLookVersion = 105;
Событие на нажатие кнопки:
begin
Text1.Text := HostName; //Присваиваем значение
Text.SelectAll; //Все выделяем
ActiveControl:= HostEdit;
Memo1.Clear; //Ощищаем Memo1
WSocket1.DnsLookup(Text1.Text);//Сам процесс DNS
end;
При удачном завершении DNS будет вызываться следующая процедура, которая является обработчиком события DnsLookupDone для WSocket:
procedure TForm.WSocket1DnsLookupDone(Sender: TObject;Error: Word);
begin
if Error = 0 then //Если ошибок нет то вывести результат
begin
Memo1.Lines:= WSocket1.DnsResultList;
end
else //А если нет, то облом
Memo1.Lines.Add := 'SUXXXXX';
end;
end.