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;