Thema: Delphi Lokale IP auslesen

Einzelnen Beitrag anzeigen

Larsi

Registriert seit: 10. Feb 2007
2.262 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Lokale IP auslesen

  Alt 16. Jul 2008, 15:44
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.

Delphi-Quellcode:
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 HostInfo<>nil then Begin
          Addr:=Pointer(HostInfo^.h_addr_list);
          if (Addr<>nil) 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:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if not GetLocalIPs(Memo1.Lines) then
     MessageDLG('Keine IP-Adresse',mtInformation,[mbOK],0);
end;
Ein Tag ohne Delphi ist ein verlorener Tag!

Homepage zu meinem neuen Programm: StreamZ
  Mit Zitat antworten Zitat