Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Eigene LanIP rausbekommen (https://www.delphipraxis.net/68817-eigene-lanip-rausbekommen.html)

kenuvis 5. Mai 2006 22:48


Eigene LanIP rausbekommen
 
hi

Irgendwie ist heut wiedermal nicht mein tag. wie bekomm ich meine eigene LanIP raus?

mfg

Luckie 5. Mai 2006 22:50

Re: Eigene LanIP rausbekommen
 
Wie man seine IP Adressen ermittelt sollte über die Suchfunktion rauszufinden sein.

kenuvis 5. Mai 2006 22:59

Re: Eigene LanIP rausbekommen
 
so, hab mal gesucht und gefunden:

http://www.delphipraxis.net/internal...ight=ermitteln

kenuvis 5. Mai 2006 23:04

Re: Eigene LanIP rausbekommen
 
so, kleines porb noch, es werden beide ips ermitelt, sowohl inet als auch lan, ich brauch aber nur lan, wie kann ich nun die function so beschränken, das sie nur die lanip ausspuckt?

SirThornberry 5. Mai 2006 23:19

Re: Eigene LanIP rausbekommen
 
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...


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz