AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi IP Adresse aus dem Hostnamen ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

IP Adresse aus dem Hostnamen ermitteln

Ein Thema von CG2003 · begonnen am 29. Apr 2010 · letzter Beitrag vom 29. Apr 2010
Antwort Antwort
CG2003

Registriert seit: 8. Nov 2003
Ort: Hamburg
470 Beiträge
 
Delphi 2009 Professional
 
#1

IP Adresse aus dem Hostnamen ermitteln

  Alt 29. Apr 2010, 08:20
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!
Sebastian M.
Viele Grüße aus Hamburg


Meine Website: www.sebastian-mundt.com
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: IP Adresse aus dem Hostnamen ermitteln

  Alt 29. Apr 2010, 08:25
Hallo,

gebs doch einfach in Google ein "Delphi GetIPFromHost"

1




Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: IP Adresse aus dem Hostnamen ermitteln

  Alt 29. Apr 2010, 08:27
Wenn man nach Delphi-Referenz durchsuchenip hostname sucht, findet man zum Beispiel das:
Delphi-Quellcode:
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;
Mist, er wollte es ja anders herum.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#4

Re: IP Adresse aus dem Hostnamen ermitteln

  Alt 29. Apr 2010, 08:42
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 MSDN-Library durchsuchenGetHostByAddr und dort findet man auch die "Umkehrfunktion" im Text genannt.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
CG2003

Registriert seit: 8. Nov 2003
Ort: Hamburg
470 Beiträge
 
Delphi 2009 Professional
 
#5

Re: IP Adresse aus dem Hostnamen ermitteln

  Alt 29. Apr 2010, 08:50
Hallo Luckie,

erstmal danke, aber so habe ich das bei mir eingebaut:

Delphi-Quellcode:
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;
bekomme aber immer nur einen leeren Wert zurück! Irgend eine Idee?
Sebastian M.
Viele Grüße aus Hamburg


Meine Website: www.sebastian-mundt.com
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#6

Re: IP Adresse aus dem Hostnamen ermitteln

  Alt 29. Apr 2010, 09:12
Zitat von CG2003:
Irgend eine Idee?
Rückgabewerte mal prüfen?

Du solltest IPAddr vielleicht vorher nicht durch MSDN-Library durchsucheninet_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.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:33 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