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
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
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
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
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