|

Coding: Delphi PING PONG по-русски
Xakep, номер #036, стр. 036-061-2
У Label1 измени свойство Caption на 'Имя компьютера', а у Label2 измени на 'Размер пакета'. Напротив Label1 должен стоять Edit1. Сюда ты будешь вводить IP адрес или имя компа, который надо пропинговать. В Edit2 будем вводить размер пакета.
Еще не помешает поставить на форму компонент RichEdit с закладки Win32. В него мы будем записывать результат пинга. И, наконец, компонент Ping с закладки FPiette, который и будет производить пинг.
Все!!! Форма готова. Осталось только написать код, которого не так уж и много.
ШКОДИНГ
Создай обработчик события OnClick для кнопки. Там нужно написать содержимое листинга 1. Здесь первой строкой я вывожу в компонент RichEdit сообщение о начале пинга. Вторая строка устанавливает размер пакета пинга (Ping1.Size) в то, которое указано в Edit2. Последняя строка запускает поиск компьютера через DNS (Ping1.DnsLookup). Даже если ты введешь IP адрес, поиск в базе DNS ничего плохого не сделает.
Теперь выдели компонент Ping1 и создай для него обработчик события OnDnsLookupDone (когда закончен поиск в базе DNS). Здесь напиши содержимое листинга 2. Чтобы легче было разобраться с его содержимым, я снабдил листинг комментариями.
Едем дальше. Нам еще нужно выловить результат пинга. Для этого создай обработчик события OnEchoReply для компонента Ping1. Здесь я вывожу результат пинга. Если Error равно 0, то показываю сообщение об ошибке. Если нет, то показываю время, за которое прошел пинг.
И напоследок сделаем еще косметическую вещь. Создай обработчик события OnEchoRequest для компонента Ping1. В нем напиши содержимое листинга 4. Это чисто косметическая поправка, которая вводит состояние пинга.
Итого
Теперь в твоем арсенале появилась еще одна утила собственного изготовления, которая обязательно должна присутствовать у любого хакера или админа. Ты можешь модернизировать пример так, как тебе вздумается. Для чего хакеру нужен пинг? Мне часто приходит в Hack-FAQ вопрос: "Как узнать IP адрес сервера?". Самый простой способ сделать это - Ping. Просто пингуешь символьное имя сервера, а твоя утила сразу показывает тебе IP адрес сервера.
Как всегда, исходники примера можно найти на моем сайте http://www.cydsoft.com/vr-online/. У меня на странице лежит немного улучшенный пример, поэтому не пугайся. Просто моя рубрика не резиновая, и я не в состоянии описать все. Я могу только толкнуть тебя в нужную сторону, а остальное пора уже додумывать самому. Там же есть ссылки на лучшие библиотеки компонентов нашей бескрайней сети.
ЛИСТИНГ 1
procedure TPingForm.Button1Click(Sender: TObject);
begin
RichEdit1.Lines.Add('Поиск ''' + Edit1.Text + '''');
Ping1.Size:=StrToInt(Edit2.Text);
Ping1.DnsLookup(Edit1.Text);
end;
ЛИСТИНГ 2
procedure TPingForm.Ping1DnsLookupDone(Sender: TObject; Error: Word);
begin
//Если произошла ошибка, то ...
if Error <> 0 then
begin
//Вывести сообщение об ошибке.
RichEdit1.Lines.Add('Хост не найден ''' + Edit1.Text + '''');
//Выход.
Exit;
end;
//Если ошибок не было, то выводим в RichEdit1 результат поиска.
Назад на стр. 036-061-1 Содержание Вперед на стр. 036-061-3
|