Entwickler-Ecke
Internet / Netzwerk - Rechnername über IP-Adresse...
FriFra - Sa 17.05.03 11:39
Titel: Rechnername über IP-Adresse...
Das Thema gab es zwar schon 1000 Mal, aber das Beispiel:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| 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; |
ist extreem langsam :evil:
Gibt es nicht eine performantere Lösung, z.B. ein Table mit allen bekannten Hosts, inkl. IP's aus welchem man dann den entspr. Eintrag zurückgibt?
Die o.g. Funktion benötigt jedenfalls z.T. mehrere Sekunden, vor allem dann, wenn kein Hostname verfügbar ist! Ausserdem kann diese Funktion keine Namn von Printservern auflösen, was Windows selbst aber hinbekommt (Netzwerkumgebung!)...
cirrus - Mo 26.05.03 01:14
eine performantere Lösung wirst du wohl nicht finden, der code greift direkt auf die winsock schnittstelle zu.
FriFra - Mo 26.05.03 01:31
Ich habe die Sache jetzt anders gelöst... Ich Rufe "net view" captured auf und filtere aus dem resultierenden Text alle Rechnernamen, diese Pinge ich dann kurz an um die IP aufzulösen. Allein das Ausführen von "net view" und der anschliessende Ping sind schon wesentlich schneller als die o.g. Funktion. Auserdem versuche ich nun nicht Rechnernamen zu bekommen wo keine sind, denn dabei hängt die Funktion etwas...
Da aber "net" sofort alle Rechnernamen auflisten kann, muss es eigentlich noch eine elegantere Lösung geben.
Ausserdem liefert die Funktion auch alle "Rechnernamen" über die hosts-Datei, welche u.U. nicht mit den tatsächlichen Namen im Intranet übereinstimmen, schon deshalb ist "net" besser...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!