DruckenMister WongFacebook

IP-Adresse eines Hosts ermitteln

System Win9x, WinNT, Win2000, WinXP, Vista, Win7
Ab Delphi-Version Delphi 1
Letzte Änderung 28.09.2010

olgende Procedure ermittelt die IP-Adressen eines Hosts. Dies kann z.B. ein Copmutername oder ein Domain-Name sein.Kern der Funktion ist der Aufruf von "getHostByName", die in der "Platform SDK: Windows Sockets 2" dokumentiert ist. Dort finden sich auch relevante Fehlercodes, die die Funktion in Falle eines Fehlers zurückgibt.


uses
  WinSock;

function GetIpAddressByName(const Lines:TStrings; const AHost: String): Boolean;
type
  PPInAddr= ^PInAddr;
var
  WSA: TWSAData;
  HostInfo: PHostEnt;
  Addr: PPInAddr;
begin
  Result:=False;
  if WSAStartUp($101, WSA) = 0 then
  begin
    try
      HostInfo:= getHostByName(PChar(AHost));
      Result:=HostInfo<>nil;
      if Result then
      begin
        Addr:=Pointer(HostInfo^.h_addr_list);
        if (Addr<>nil) AND (Addr^<>nil) then
        begin
          Repeat
            Lines.Add(StrPas(inet_ntoa(Addr^^)) ) ;
            inc(Addr);
          Until Addr^=nil;
        end;
      end;
    finally
     WSACleanup;
    end;
  end;
end;
 

Die Funktion gibt True zurück, falls der Aufruf von getHostByName erfolgreich war:


procedure TForm1.Button1Click(Sender: TObject);
begin
 if GetIpAddressByName(Listbox1.Items, 'www.google.de') then
   Showmessage('OK')
 else
   ShowMessage('Fehler');
end;