Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 

Re: Eigene LanIP rausbekommen

  Alt 5. Mai 2006, 23:19
ich hab in meinem Projekt die IP wie folgt ermittelt:
Delphi-Quellcode:
function TClassName.GetIpAddress(): string;
var phoste: PHostEnt;
    Hostname: array [0..100] of char;
begin
  GetHostName(Hostname,Sizeof(Hostname));
  phoste:=GetHostByName(Hostname);
  if phoste = nil then result:='127.0.0.1'
  else result:=String(inet_ntoa(PInAddr(phoste^.h_addr_list^)^));
end;
Wenn du im Netz bist bekommst du aber damit die richtige IP wenn diese in der Liste vorn steht. Du musst also in der Liste die ip's durchgehen.

[Edit]
Und hier nochmal die Funktion so überarbeitet das sie Standalone funktioniert und alle IP's auflistet
Delphi-Quellcode:
function GetIpAddress(): string;
var phoste: PHostEnt;
    Hostname: array [0..100] of char;
    LData : WSAData;
    LCount : Integer;
    LPtr : PInAddr;
begin
  WSAStartup(MakeWord(2, 0), LData);
  if GetHostName(Hostname,Sizeof(Hostname)) = 0 then
  begin
    phoste:=GetHostByName(Hostname);
    if phoste = nil then
      result:='127.0.0.1'
    else begin
      result := '';
      for LCount := 0 to phoste.h_length - 1 do
      begin
        LPtr := PInAddr(Pointer(Cardinal(phoste^.h_addr_list) + Cardinal(LCount) * SizeOf(TInAddr))^);
        if Assigned(LPtr) then
          result := result + StrPas(inet_ntoa(LPtr^)) + '|';
      end;
    end;
  end else
    result := IntToStr(WSAGetLastError);
end;
Wenn du also online bist müsstest du in der Schleife die Lan-IP's filtern. Und wenn du mehrere Lan-IP's hast musst du dir überlegen welche du haben willst...
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat