Ping pomocí komponenty INDY

Klíčová slova:
Rubrika: Delphi
Několikrát jsem se setkal s problémem jak zjistit pomocí Delphi jeli internetový server v určitou chvíli připojen. Při běžném používání použiji prostě příkaz Ping a hnedle vím jak si stojím. V prostředí Delphi 6 lze takovíto ping také použít. Na jedné s palet open source komponent INDY totiž najdete komponentu s názvem IdIcmpClient. Tato komponenta má právě metodu Ping kterou použijeme v následujícím příkladu.
 
Připravil jsem pro vás jednoduchou aplikaci která bude nakonci vypadat asi takto:
 
 
Hlavní okno bude obsahovta následující komponenty:
TIdIcmpClient - komunikační komponenta s palety Indy Clients
TEdit - pro zadání adresy
TSpinEdit - pro nastavení Timeoutu
TListView - pro zaznamenábí návratových hodnot
TBitBtn - pro spuštění jednoho pingu
TBitBtn - pro smazání zaznamenaných dat.
+ několik tlačítek a labelů
 
Pro nás nejdůležitější jsou výsledná data Pingu která dostaneme v eventu Reply komponent TIdIcmpClien. Funkce vypisující vrácené informace vypadá následujícím způsobem:
 

procedure TForm1.IdIcmpClientReply(ASender: TComponent;
const AReplyStatus: TReplyStatus);
var
s: string;
aListItem : TListItem;
begin
aListItem := ListView1.Items.Insert(0);
with aListItem do
begin
Caption := AReplyStatus.FromIpAddress;
SubItems.Add(IntToSTr(AReplyStatus.BytesReceived));
SubItems.Add(IntToStr(AReplyStatus.MsgType));
SubItems.Add(IntToStr(AReplyStatus.SequenceId));
SubItems.Add(IntToStr(AReplyStatus.MsRoundTripTime));
SubItems.Add(IntToStr(AReplyStatus.TimeToLive));

s:= 'No Status';
Case AReplyStatus.ReplyStatusType of
rsEcho : s:= 'rsEcho';
rsError : s:= 'rsError';
rsTimeOut : s:= 'rsTimeOut';
rsErrorUnreachable : s:= 'rsErrorUnreachable';
rsErrorTTLExceeded : s:= 'rsErrorTTLExceeded';
end;

SubItems.Add(s);
end;
end;

 
Vlastní zpuštění funkce ping je na jedno z tlačítek a vyoadá takto:
 

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
IdIcmpClient.ReceiveTimeout := SpinEdit1.Value;
IdIcmpClient.Host := eHost.Text;
IdIcmpClient.Ping();
end;

 
Úplné zdrojové soubory si můžete stáhnout na adrese http://www.provaz.cz/download_id.php?id=51
Můžete si stáhnout i celý přeložený EXE soubor na adrese http://www.provaz.cz/download_id.php?id=52
Aktuální zdrojové kódy knihovny INDY najdete na drese http://www.indyproject.org/
 
 
Autor: Jiří Provazník
Datum vydání: 13.09.2003 | Zobrazeno: 6308
Permanentní odkaz: Ping pomocí komponenty INDY

Komentáře (1)
Zdravím. Marně hledam ten zdrojak. Je tam misto něho exe http://www.provaz.cz/sector02/clanky-20.html
Autor:Leo
Přidej vlastní komentář:
Následující (běžně neviditelná) pole slouží pro vnitřní identifikaci systému. Pokud je vyplníte nebude možné váš požadavek na straně serveru zpracovat:
URL:
contents:
Website:
Pro odeslání vašeho komentáře použijte tlačítko "Odeslat". Toto tlačítko nepoužívejte:

Následující položky je vhodné vyplnit:
Jméno :
Email :
Web :
Místo :
Hodnocení:
Hodnocení jako pomocí hvězdiček
1/5= nejhorší, 5/5=nejlepší