IP Adresse aus dem Hostnamen ermitteln
Hallo,
momentan nutze ich folgende Funktion um den Hostnamen einer IP-Adresse zu ermitteln:
Delphi-Quellcode:
function IPAddrToName(IPAddr: AnsiString): AnsiString;
var SockAddrIn: TSockAddrIn; HostEnt: PHostEnt; WSAData: TWSAData; begin WSAStartup($101, WSAData); SockAddrIn.sin_addr.s_addr:=inet_addr(PAnsiChar(IPAddr)); HostEnt:= GetHostByAddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET); if HostEnt<>nil then begin Result:=StrPas(Hostent^.h_name) end else begin Result:=''; end; end; gibt es auch die "umgekehrte" Möglichkeit, also anhand des Hostnamens die IP-Adresse zu erhalten? Danke im Voraus! |
Re: IP Adresse aus dem Hostnamen ermitteln
|
Re: IP Adresse aus dem Hostnamen ermitteln
Wenn man nach ip hostname sucht, findet man zum Beispiel das:
Delphi-Quellcode:
Mist, er wollte es ja anders herum.
function GetComputerName(IPAddr: string): string;
var SockAddrIn: TSockAddrIn; HostEnt: PHostEnt; WSAData: TWSAData; begin WSAStartup($101, WSAData); SockAddrIn.sin_addr.s_addr := inet_addr(IPAddr); HostEnt := gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET); if HostEnt <> nil then Result := StrPas(Hostent^.h_name) else Result := ''; end; |
Re: IP Adresse aus dem Hostnamen ermitteln
Um das oben schon verlinkte Beispiel mal zu erklären:
GetHostByAddr - Quelle=IP GetHostByName - Quelle=URL/Domain Man kennt nun also schon GetHostByAddr und schaut einfach mal nach, was es dazu für Informationen gibt. In diesem Fall geht man also zum MSDN GetHostByAddr und dort findet man auch die "Umkehrfunktion" im Text genannt. |
Re: IP Adresse aus dem Hostnamen ermitteln
Hallo Luckie,
erstmal danke, aber so habe ich das bei mir eingebaut:
Delphi-Quellcode:
bekomme aber immer nur einen leeren Wert zurück! Irgend eine Idee?
function NameToIPAddr(IPAddr: PAnsiChar): AnsiString;
var SockAddrIn: TSockAddrIn; HostEnt: PHostEnt; WSAData: TWSAData; begin WSAStartup($101, WSAData); SockAddrIn.sin_addr.s_addr := inet_addr(IPAddr); HostEnt := GetHostByName(@SockAddrIn.sin_addr.S_addr); if HostEnt <> nil then Result := StrPas(Hostent^.h_name) else Result := ''; end; |
Re: IP Adresse aus dem Hostnamen ermitteln
Zitat:
Du solltest IPAddr vielleicht vorher nicht durch inet_addr jagen. ;) Außerdem brauchst du in diesem Falle die TSockAddrIn-Struktur nicht. Allerdings sagt Microsoft auch, dass man die GetAddrInfo-Function für sowas nutzen soll, da GetHostByName veraltet ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz