Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Ping средствами Дельфей


Автор: Jey_k 3.2.2005, 11:55
Полезная весчь. Например для программки мониторинга работоспособности компов в офисе и удаленнных хостов, можно целую базу с графиками забабахать.
Стоит лишь взять за основу компонент Indy IdICMPClient и заюзать:
Код

unit Main;

interface

uses
 Windows, Messages, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls,
 SysUtils, Classes, IdIcmpClient, IdBaseComponent, IdComponent, IdRawBase, IdRawClient;


type
 TfrmPing = class(TForm)
   lstReplies: TListBox;
   ICMP: TIdIcmpClient;
   Panel1: TPanel;
   btnPing: TButton;
   edtHost: TEdit;
   procedure btnPingClick(Sender: TObject);
   procedure ICMPReply(ASender: TComponent; const ReplyStatus: TReplyStatus);
 private
 public
 end;

var
 frmPing: TfrmPing;

implementation
{$R *.DFM}

procedure TfrmPing.btnPingClick(Sender: TObject);
var
 i: integer;
begin
 ICMP.OnReply := ICMPReply;
 ICMP.ReceiveTimeout := 1000;
 btnPing.Enabled := False; try
   ICMP.Host := edtHost.Text;
   for i := 1 to 4 do begin
     ICMP.Ping;
     Application.ProcessMessages;
     //Sleep(1000);
   end;
 finally btnPing.Enabled := True; end;
end;

procedure TfrmPing.ICMPReply(ASender: TComponent; const ReplyStatus: TReplyStatus);
var
 sTime: string;
begin
 // TODO: check for error on ping reply (ReplyStatus.MsgType?)
 if (ReplyStatus.MsRoundTripTime = 0) then
   sTime := '<1'
 else
   sTime := '=';

 lstReplies.Items.Add(Format('%d bytes from %s: icmp_seq=%d ttl=%d time%s%d ms',
   [ReplyStatus.BytesReceived,
   ReplyStatus.FromIpAddress,
   ReplyStatus.SequenceId,
   ReplyStatus.TimeToLive,
   sTime,
   ReplyStatus.MsRoundTripTime]));
end;

end.

Автор: RA 4.2.2005, 22:21
Ради такого пустяка как пинг использовать Indy smile .

ЗЫ:
Лично меня никто и ничто не заставит использовать эти компоненты.

Автор: Jey_k 5.2.2005, 13:53
Цитата(RAdmin @ 4.2.2005, 22:21)
Лично меня никто и ничто не заставит использовать эти компоненты.

Если не секрет. Почему такое недоверие этим компонентам?
По причине отсутствия литературы? Дык там все и без нее понятно smile
А как ты пинг делаешь другим способом? Листинг приветствуется smile

Автор: RA 5.2.2005, 14:58
Отсутвие литературы к компонентам меня уже давно не смущает smile

Недоверие smile я бы не сказал, просто не пользуюсь ими, нахожу альтернативу, скорее по причине размеров приложения.

Ксати помню кто-то из создатей библиотеки KOL писал что инди глючные.

Вообще почти всё что связанно с сокетами можно решать без VCL, это не сложно.

К примеру тотже пинг:
http://www.codenet.ru/progr/delphi/stat/ping.php

Автор: Jey_k 8.2.2005, 12:15
RAdmin
Цитата
У данного примера есть один недостаток - программа не воспримет доменное имя, только IP-адресс.

Автор: RA 8.2.2005, 13:39
Jey_k smile Ну это не проблема, преобразовать домен в IP.

Автор: Guest 10.2.2005, 12:47
А на какой Delphi это работает? У меня v6 но не хотит... smile

Автор: Guest 10.2.2005, 13:37
Нет, это я ступил... smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)