![]() |
Rechner-Name aus IP: Wieso ist die Function so langsam?
Hallo,
ich habe bei den Schweizern folgenden Code gefunden:
Delphi-Quellcode:
Er dient dazu, aus einer Ip-Adresse den Rechnernamen rauszufinden.
function IPAddrToName(IPAddr: string): string;
var SockAddrIn: TSockAddrIn; HostEnt: PHostEnt; WSAData: TWSAData; begin WSAStartup($101, WSAData); SockAddrIn.sin_addr.s_addr := inet_addr(PChar(IPAddr)); HostEnt := gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET); if HostEnt <> nil then Result := StrPas(Hostent^.h_name) else Result := ''; end; Dies funktioniert auch. Nur bei der Zeile:
Delphi-Quellcode:
wartet das Programm gute 10 - 15 sek und tut nichts.
HostEnt := gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
Dazu meine Fragen:
|
Re: Rechner-Name aus IP: Wieso ist die Function so langsam?
Delphi-Quellcode:
Da es mit der lokalen IP Adresse ganz fix geht, liegt es wohl am Netzwerk.
uses
WinSock; function IPAddrToName(IPAddr: string): string; var SockAddrIn: TSockAddrIn; HostEnt: PHostEnt; WSAData: TWSAData; begin WSAStartup($101, WSAData); SockAddrIn.sin_addr.s_addr := inet_addr(PChar(IPAddr)); HostEnt := gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET); if HostEnt <> nil then Result := StrPas(Hostent^.h_name) else Result := ''; end; procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(IPAddrToName('127.0.0.1')); end; |
Re: Rechner-Name aus IP: Wieso ist die Function so langsam?
Zitat:
Ich habs selber gerade mit der localen IP-Adresse getestet und da war es sehr flott - liegt wohl wirklich an den Sockets. |
Re: Rechner-Name aus IP: Wieso ist die Function so langsam?
Zitat:
|
Re: Rechner-Name aus IP: Wieso ist die Function so langsam?
ne keine namensauflösung sondern eine RDNS anfrage
das heist, es gibt einen reverse dns eintrag in den DNS servern, die zu einer IP den namen wissen. somit eine "ip auflösung" ;) und da windows bei sich selbst den namen direkt kennt, geht das auch ohne umweg so schnell. bei den internet IPs, muss da erstmal der ganze weg bis zum jeweiligen dienst gefunden und dann auch der rdns zurück kommen.. das braucht seine mehr oder weniger große zeit. man beachte auch diesen wiki eintrag: ![]() |
Re: Rechner-Name aus IP: Wieso ist die Function so langsam?
Zitat:
reverse DNS geht aber nich im loacl-netzwerk. da wird für die "namens"-auflösung unter windows soweit ich weiss WINS hergenommen... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz