Czas odpowiedzi DNS

0

Witam
Jak z poziomu Delphi zmierzyć czas odpowiedzi serwera DNS? Wysyłam adres, dostaje IP, ale nie potrafie dokładnie (ms) zmierzyć czasu pomiedzy wysłaniem a odebraniem...
Pozdrawiam
KeV

0

Sciągnij ICS (TPing)..oto kod (przykładowy):

procedure TMainfrm.UstawParametry;
begin
Ping.Address:=EdtHost.Text;
Ping.Size:=StrToInt(EdtSize.Text);
Ping.TTL:=StrToInt(EdtTTL.text);
Ping.Timeout:=StrToInt(EdtTimeOut.text);
end;

procedure TMainfrm.PingDnsLookupDone(Sender: TObject; Error: Word);
begin
if Error 0 then begin
Status.Lines.Add('Host nieznany + EdtHost.Text +');
Exit;
end;

Status.Lines.Add('Host ` + EdtHost.Text + ` jest ' + Ping.DnsResult);
Ping.Address := Ping.DnsResult;
Ping.Ping;

end;

procedure TMainfrm.PingEchoReply(Sender, Icmp: TObject; Error: Integer);
begin
if Error = 0 then
Status.Lines.Add('Nie moge spingować hosta (' + Ping.HostIP + ') : ' +
Ping.ErrorString)
else
Status.Lines.Add('Odebrano ' + IntToStr(Ping.Reply.DataSize) +
' bajtów od ' + Ping.HostIP +
' w ' + IntToStr(Ping.Reply.RTT) + ' msecs');
Status.Lines.Add('_______________________________________')
end;

procedure TMainfrm.PingEchoRequest(Sender, Icmp: TObject);
begin
Status.Lines.Add('Wysłano ' + IntToStr(Ping.Size) + ' bajtów do ' +
Ping.HostName + ' (' + Ping.HostIP + ')');
Status.Lines.Add('------')
end;

PS: Mozliwe tez jest wykorzystanie komponentu ICMP (INDY):

ściągnij DEMO INDY z nevrony

0

Sciągnij ICS (TPing)..oto kod (przykładowy):

....

Dzięki za pomoc, ale nie o to mi dokładnie chodziło... Chodzi mi o czas odpowiedzi DNSa... czyli czas pomiędzy:

[code]

Ping1.DnsLookup(HostEdit.Text);

[/code]

a tą procedurą:

[code]
procedure TMainfrm.PingDnsLookupDone(Sender: TObject; Error: Word);
begin
if Error 0 then begin
Status.Lines.Add('Host nieznany + EdtHost.Text +');
Exit;
end;

Status.Lines.Add('Host + EdtHost.Text + jest ' + Ping.DnsResult);
Ping.Address := Ping.DnsResult;
end;

[/code]

Jeszcze raz proszę o pomoc...
Pozdrawiam
KeV

0

to zrób tak: globalna zmienna typu cardinal, Po procedurce Lookup przypisujesz jej (zmiennej) wartość funkcji GetTicksCount, następnie na początku lookupdone dajesz

ZmiennaGlobalna:=ZmiennaGlobalna-getTicsCount;

co da ci rezultat w milisekundac od lookupa do lookup done

0

to zrób tak: globalna zmienna typu cardinal, Po procedurce Lookup przypisujesz jej (zmiennej) wartość funkcji GetTicksCount, następnie na początku lookupdone dajesz

ZmiennaGlobalna:=ZmiennaGlobalna-getTicsCount;

co da ci rezultat w milisekundac od lookupa do lookup done

Dzięki, właśnie tego dokładnie szukałem... Ale mała poprawka dla tych którzy będą chcieli skorzystać z tego w przyszłości - funkcjata w Delphi nosi nazwę GetTICKCount ...
Pozdrawiam
Kev

0 użytkowników online, w tym zalogowanych: 0, gości: 0