Entwickler-Ecke

Internet / Netzwerk - IP eines Rechners rausfinden


WolfB - Fr 24.02.06 22:20
Titel: IP eines Rechners rausfinden
hi, mal ne frage,
kann man mit delphi sich die ip eines rechners, also des rechners, auf dem das programm läuft, rausfinden und diese ausgeben lassen?


recall - Fr 24.02.06 22:31

hi,

welche IP möchtest du denn haben ?
Die im lokalen Netzwerk, oder die IP, die der Rechner im Internet hat ?
Lokal ist das allerdings ggf. nicht eindeutig (mehrere Netzwerkkarten), es gibt dazu aber
Methoden (suche im Delphi-forum, ich weiß nicht mehr wo genau, aber ich hab das hier schonmal gelesen).

Im Internet kannst du ggf. mit einer HTTP-Komponente (z.B. Indy) ein php-Skript, z.B. http://www.prodego.de/myIP.php aufrufen und die IP-Adresse auslesen (Das ist jetzt meine persönliche Adresse, es gibt aber auch ein php-Skript bei DynDns, das einem die IP anzeigt).

Viele Grüsse.


Marco D. - Fr 24.02.06 22:31

1. Komponente IdIPWatch verwenden
2.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
uses Winsock;

function GetLocalIPs(const Lines:TStrings):Boolean;
type
  PPInAddr= ^PInAddr;
var
  wsaData: TWSAData;
  HostInfo: PHostEnt;
  HostName: Array[0..255of 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<>nilAND (Addr^<>nilthen 
             Repeat
                    Lines.Add(StrPas(inet_ntoa(Addr^^)));
                    inc(Addr);
             Until Addr^=nil;
       end;
    end;
    Result:=True;
  finally
    WSACleanup;
  end;
end;


Narses - Sa 25.02.06 13:48

Moin!

Mit der Funktion:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
// nur die erste Adresse:
function GetIPByName(const Hostname : String;  
                     var   IPv4     : in_addr  
                     ): Boolean;  
// oder alle Adressen
function GetIPByName(const Hostname : String;  
                     var   IPv4List : in_addr_list  
                     ): Boolean;

aus dieser Unit [http://www.delphi-forum.de/viewtopic.php?p=319893#319893], Parameter Hostname auf einen Leerstring setzen. :wink:

Im Codebeispiel der Unit im Anhang ist das ganze auch als laufendes Programm "begutachtbar", einfach als Hostnamen "localhost" oder Leerstring eingeben und "nur IP auflösen" anklicken.

cu
Narses