Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   iOS Die IP-Adresse des iPhone herausfinden (https://www.delphipraxis.net/174485-die-ip-adresse-des-iphone-herausfinden.html)

Daniel 24. Apr 2013 15:22


Die IP-Adresse des iPhone herausfinden
 
Moin,


sollte jemand ein dringendes Bedürfnis verspüren - nämlich das, die IP-Adresse seines iPhones herauszufinden, wenn es sich in einem WLAN befindet, dann könnte folgender Code (Delphi XE4) hilfreich sein:

Delphi-Quellcode:
uses Idstack, IdGlobal;

procedure TForm2.Button1Click(Sender: TObject);
var
  gs : TIdStack;
  IPs: TStringList;
  IP: String;
  I: Integer;
  Err: Boolean;
begin
  TIdStack.IncUsage;

  IPs := TStringList.Create;
  try
    GStack.AddLocalAddressesToList(IPs);
    for I := 0 to IPs.Count-1 do
    begin
      IP := IPs[I];
      Memo1.Lines.Add( IP );

      IPv4ToDWord(IP, Err);
      if not Err then
        Break;
      IP := '';
    end;
  finally
    IPs.Free;
  end;
  if IP <> '' then
  begin
    Memo1.Lines.Add( IP );
  end;
end;
Ganz wichtig:
Dieser Code stammt NICHT von mir, Remy Lebeau hat ihn auf stackoverflow veröffentlicht.
Gegenwärtig läuft der Code NUR auf dem iOS-Gerät selbst, der Simulator, der die Netzwerk-Infrastruktur von Mac verwendet, liefert hier einen ungültigen Host-Namen. Man wird das wohl noch etwas eleganter ausprogrammieren können, aber o.g. Code stellt schon mal einen Anfang dar.

BUG 24. Apr 2013 16:11

AW: Die IP-Adresse des iPhone herausfinden
 
Zitat:

Zitat von Daniel (Beitrag 1212725)
Dieser Code stammt NICHT von mir, Remy Lebeau hat ihn auf stackoverflow veröffentlicht.

Da wäre wohl ein Link angebracht :warn: :mrgreen:
Ich nehme mal an, diese Antwort ist es.

Daniel 24. Apr 2013 16:16

AW: Die IP-Adresse des iPhone herausfinden
 
Eine Sache ist mir dabei noch unklar:

Wenn ich im Mac OS X einen Terminal öffne, wird mir der Hostname mit "lappy.fritz.box" abgezeigt. "lappy" ist mein Laptop und hängt aktuell per WLAN an der Fritz-Box. Ein Ping auf "lappy.fritz.box" wird mit "unknown host" beantwortet. Ein Ping auf "fritz.box" geht tadellos und danach (!) geht auch ein Ping auf "lappy.fritz.box". Der oben genannten Code läuft hier nun fehlerfrei auf Win32, Mac OS X und iOS - wenigstens im Moment.

Alle beteiligen Geräte laufen schon seit Stunden und sind ebenso lang miteinander im Netzwerk verbunden. Andere Störfaktoren gibt es nicht - und ich kann aktuell nicht erklären, warum der Ping mal geht und mal nicht.

mjustin 24. Apr 2013 16:17

AW: Die IP-Adresse des iPhone herausfinden
 
Zitat:

Zitat von Daniel (Beitrag 1212725)
Gegenwärtig läuft der Code NUR auf dem iOS-Gerät selbst, der Simulator, der die Netzwerk-Infrastruktur von Mac verwendet, liefert hier einen ungültigen Host-Namen. Man wird das wohl noch etwas eleganter ausprogrammieren können, aber o.g. Code stellt schon mal einen Anfang dar.

Remy Lebeau hat in den heutigen Releaseinformationen zu Indy 10.6 geplante tiefgehende Änderungen im Bereich GetLocalIPAddress(es) beschrieben, die dieses Problem eventuell beheben:

Zitat:

The TIdStack.LocalAddress(es) properties will eventually be replaced
in a future release with a new TIdStack.GetLocalAddressList() method that
uses platform-appropriate native OS functions instead of reverse DNS lookups
to determine local IPs, differentiates between IPv4 and IPv6 addresses, and
reports local subnet masks and possibly subnet broadcast IPs.

Mavarik 24. Apr 2013 16:28

AW: Die IP-Adresse des iPhone herausfinden
 
ich bekommen auf iPad & iPhone immer den Fehler:
nodename nor servname provided, or not known(8)

Mavarik

Daniel 24. Apr 2013 16:36

AW: Die IP-Adresse des iPhone herausfinden
 
Okay, der Code greift sich den Hostnamen des Gerätes, auf dem er läuft und versucht dann, dessen IP zu ermitteln. Das ist der Knackpunkt: Wenn im lokalen Netzwerk so ein Name nicht aufgelöst werden kann, gibt es den beschriebenen Fehler.

elvispresley 23. Mai 2013 16:08

AW: Die IP-Adresse des iPhone herausfinden
 
Zitat:

Zitat von Daniel (Beitrag 1212742)
Okay, der Code greift sich den Hostnamen des Gerätes, auf dem er läuft und versucht dann, dessen IP zu ermitteln. Das ist der Knackpunkt: Wenn im lokalen Netzwerk so ein Name nicht aufgelöst werden kann, gibt es den beschriebenen Fehler.

und wie macht man das nun, damit das auf einem iphone funktioniert. wie bereits erwähnt funktioniert das auf dem simulator ohne probleme aber auf dem ios kommt die fehlermeldung.
hat jedmand den richtigen code, wie das auf dem gerät funktioniert?


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:18 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