Home » Tipps & Tricks » Netzwerk/Internet » Netzwerkeigenschaften » Lokale IP-Adressen ermitteln
Lokale IP-Adressen ermitteln
Folgende Funktion gibt die lokalen IP-Adressen zurück. Sie erwartet als Parameter eine abgeleitete Klasse von TStrings, wie beispielsweise TMemo.Lines oder TListbox.Items oder auch eine TStringList. Sie gibt True zurück, wenn mindestens eine IP-Adresse ermittelt werden konnte. Sollte der Computer hinter einem Router liegen, wird die echte Internet-Adresse nicht berücksichtigt.Die Unit WinSock muss eingebunden werden.
function GetLocalIPs(const Lines:TStrings):Boolean; type PPInAddr= ^PInAddr; var wsaData: TWSAData; HostInfo: PHostEnt; HostName: Array[0..255] of Char; Addr: PPInAddr; begin Result:=False; Lines.Clear; if WSAStartup($0102, wsaData)=0 then try if gethostname(HostName, SizeOf(HostName)) = 0 then Begin HostInfo:= gethostbyname(HostName); if HostInfonil then Begin Addr:=Pointer(HostInfo^.h_addr_list); if (Addrnil) AND (Addr^nil) then Repeat Lines.Add(StrPas(inet_ntoa(Addr^^))); inc(Addr); Until Addr^=nil; end; end; Result:=True; finally WSACleanup; end; end;
Aufgerufen werden kann die Funktion z.B. so:
procedure TForm1.Button1Click(Sender: TObject); begin if not GetLocalIPs(Memo1.Lines) then MessageDlg('Keine IP-Adresse', mtInformation, [mbOK], 0); end;