pondělí 20. srpna 2007

NTP klient s Delphi za minutu


Potřeboval jsem pro jeden počítač s Windows 2000 vytvořit konzolového SNTP klienta pro snadnou synchronizaci času s daným NTP serverm, a začal tak zkoumat komponenty v Delphi, C++ a Visual Basicu. Zůstal jsem u Delphi, jeho komponenty jsou opravdu vynikající, s dobře dokumentovanými kvalitními příklady, a snadno použitelné.

C++ jsem nezvolil pro primitivnost a absenci funkcí, Visual Basic je sice funkčností extrémně rozsáhlý, ale velice pomalu se načítá (oproti Delphi).
Pro zprovoznění SNTP komponenty postačí snadný kus kódu na začátek, jasný snad i naprostým laikům. 

Příklad - kód

Jednoduchého konzolového SNTP klienta s adresou předávanou pomocí parametru při spouštění, ošetření chyb se socketem a kontrolou úspěšnosti uděláte během pár minut, například tímto kódem: 
//SNTPClient v1.0 by Kodl
program SNTPclient;

{$APPTYPE CONSOLE}

uses
  SysUtils, IdBaseComponent, IdComponent, IdUDPBase, IdUDPClient, IdSNTP;

var
  SNTP: TIdSNTP;
  tmp: TIdSNTP;
  success: Boolean;

begin
  SNTP := TIdSNTP.Create(tmp);

  WriteLn('SNTPclient v1.0 - (c) 2007 Kodl Software');
  WriteLn;

  if ParamStr(1) = '' then
   begin
    WriteLn('Nebyla zadana adresa NTP serveru.');
    exit;
   end;

  SNTP.Host := ParamStr(1);
  SNTP.Port := 123;
  try
    success := SNTP.SyncTime;
  except
    on E: Exception do
     begin
      WriteLn('Nastala chyba pri manipulaci se socketem!');
     end;
  end;
  if success then
    WriteLn('Cas byl synchronizovan z '+ParamStr(1)+' v '+TimeToStr(Time)+' ('+DateToStr(Date)+')');

  SNTP.Free;
end.
 
Nejzajímavější je asi velice všestranný objekt SNTP, který akceptuje jako vlastnost libovolnou jemu dostupnou vlastnost, umí používat různé porty (na jednom je třeba čas středoevropský, na dalším Greenwitchský a na třetím nějaký další) a obsahuje i SyncTime funkci pro synchronizaci času a jeho přiřazení místo času počítače pomocí mě neznámých funkcí a maker nějakého objektu.
A celý program se neváže jen na Windows 2000/XP. 

Příklad - vzhled

Vlastní plně interaktivní aplikace vygenerovaná těmito pár řádky kódu vypadá poté následovně:
SNTP klient v akci
Časových serverů můžete být de-facto neomezené množství.

Za Delphi stojí zejména Borland, kterému tímto gratuluji ke skvělé práci :-) Podobnou jednoduchou aplikaci můžete stáhnout online i na http://kodlsoft.wz.cz/product/SNTPclient.

Žádné komentáře:

Okomentovat