Wie kommen meine IP-Adresse programmgesteuert auf iOS/macOS?
Möchte ich erhalten mein iPad die IP-Adresse programmgesteuert.
Wie kann ich die Abfrage des Netzwerk-subsystem, um herauszufinden, was mein IPv4 (und IPv6) - Adressen?
PS: Kann ich IPv6 deaktivieren irgendwie?
In Bezug auf dein 'PS' oben, bitte nicht programmgesteuert deaktivieren Sie IPv6 auf jemandes Gerät. Es ist einfach nur unhöflich.
Sie können nicht deaktivieren Sie IPv6. Es ist zwingend erforderlich. In der Tat, Ihre iOS-app muss IPv6 unterstützen.
Sie können nicht deaktivieren Sie IPv6. Es ist zwingend erforderlich. In der Tat, Ihre iOS-app muss IPv6 unterstützen.
InformationsquelleAutor Wilbur | 2011-08-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Folgende code findet alle IPv4-und IPv6-Adressen auf einem iOS-oder OSX-Gerät. Die ersten
getIPAddress
Methode wirkt mehr oder weniger als die älteren code in dieser Antwort: Sie bevorzugen entweder das eine oder das andere geben Sie Adresse, und es immer bevorzugt über WIFI cellular (natürlich könnten Sie dies ändern).Interessanter ist es zurückkehren kann, ein Wörterbuch mit allen Adressen gefunden, überspringen von Adressen für
not up
Schnittstellen, oder Adressen zugeordnetloopback
. Der Vorherige code sowie anderen Lösungen, die auf dieses Thema wird nicht decodiert IPv6 (inet_ntoa kann nicht mit Ihnen umgehen). Dies war wies mich darauf hin, durch Jens Alfke auf einem Apple-forum - die ordnungsgemäße Funktion zu verwenden, ist inet_ntop (Blick auf der Mann-Seite, und oder beziehen sich auf diese inet_ntop Artikel auch von Jens.Wörterbuch Schlüssel haben die form "interface" "/" "ipv4-oder ipv6".
EDIT1: Code aktualisiert, am Mai 16, 2014 (bug hingewiesen hat, lhunath, siehe Kommentare). Der Loopback-Adressen jetzt wieder, aber es ist einfach für Sie, um zu heben Sie die Auskommentierung der Prüfung ausschließen Sie selbst.
EDIT2: (ein paar unbekannte person): weiter Verbessert 13. März 2015: Im Fall, dass der Benutzer verwendet ein VPN (egal über WLAN oder Mobilfunk), den bisherigen code wäre gescheitert. Nun, es funktioniert auch mit VPN-verbindungen. VPN-verbindungen Vorrang vor WiFi und Zelle, weil das ist, wie das Gerät verarbeitet es. Dies sollte auch die Arbeit für Macs, wie die VPN-Verbindung auf einem Mac ist auch zu verwenden, WENN utun0 aber nicht getestet.
EDIT3: (9/8/2016) Angesichts der Probleme, die durch @Qiulang (siehe Kommentare) mit dem VPN-code (die jemand anders Hinzugefügt), habe ich kommentiert es aus. Wenn jemand weiß definitiv, wie man einen Benutzer angeben, der VPN-bitte läuten mit einem Kommentar.
addr
bekommt NULL? mein Benutzer gelegentlich erhalten NULL. wissen Sie, was sind mögliche Gründe?Ich bin mit nur
AF_INET
zu überprüfen. könnte dies sein?Ich weiß es nicht, aber es ist sicher möglich Ihre Benutzer können auf ein IPV6-Netzwerk.
Dies sollte die "richtige" Antwort, denn es ist komplett mit 3G. Vielen Dank für das update.
Ich glaube nicht, dass das funktioniert korrekt mit IPv6. Die inet_ntoa-Funktion nimmt eine IPv4-Adresse, also in dem Fall, wo sa_type == AF_INET6 nehmen Sie die IPv6-Adresse und type-casting es um IPv4 und drehen, dass zu einem string (im wesentlichen aus der hohen 32-bits der 128-bit-Adresse.)
InformationsquelleAutor David H
In Ihrer Implementierung Datei .m ,
Wenn Sie einen Blick nachfolgend finden Sie einige leicht modifizierte code, gibt die Zelle (3G) - Adresse, wenn das WLAN ausgeschaltet ist.
Der folgende code gibt die IPv4-Adresse von en0 nur. Was ist mit IPv6? Kann jemand ein code-Beispiel, wie es abrufen?
Wow!!!! arbeiten wie ein Charme +1 🙂
Das man nicht finden-ip-Adresse wenn das Gerät keine wifi-Verbindung, aber zu cellluar Netzwerk
InformationsquelleAutor Raptor
Wäre es, einfach zu rufen Sie einfach eine der IP-Adresse lookup-Dienste? Ich habe bis http://ipof.in als service, gibt das Gerät die IP-Adresse als JSON /XML oder plain text. Sie finden Sie hier
http://ipof.in/json
http://ipof.in/xml
http://ipof.in/txt
Wenn Sie möchten, HTTPS verwenden Sie die gleichen URLs mit
https
Präfix. Der Vorteil liegt auch darin, dass selbst wenn Sie auf einem Wifi-erhalten Sie die öffentliche Adresse.Awesome Sachen, die in handliches kommen in ein paar Fällen bin ich mir sicher. Jede Nutzung, Einschränkungen oder kommerzielle Garantie für die Verfügbarkeit?
nichts im moment sowohl Einschränkung, und Garantie, aber es wurde ziemlich stabil und nimmt ein paar tausend hits am Tag.
Auf iOS, ist dies die einzige Methode, die es richtig gibt die öffentliche IP-Adresse aus all den Antworten aufgelistet.
Dieser liefert nur eine IPv4-Adresse.
InformationsquelleAutor vivekv
Viele bestehende Lösungen nur in Erwägung ziehen, WLAN-Schnittstellen, die nicht für WLAN-verbindungen über einen Ethernet-adapter (dh. kein Wifi oder 3G); siehe diese neuere Lösung, die Ansicht, IP-Adressen, die durch WLAN-Schnittstellen.
iPad: Wie man die IP-Adresse programmgesteuert mit einem Kabel (nicht über WLAN)
Ich weiß nicht, aber ich habe bemerkt, es ist nicht AF_INET-Familie, wie die anderen Schnittstellen de
InformationsquelleAutor lundhjem
IP-Adresse mittels Swift-3:
InformationsquelleAutor BHAVIK PANCHAL
Die aktuelle Lösung nicht die Rückkehr der en0-Gerät auf OS X, der folgende code verwendet die System-Configuration-Framework, um die Schnittstellen verwendet dann die standard-C-Funktionen, um die IP-Adresse.
InformationsquelleAutor A.Badger
Dieser Antwort wurde inspiriert durch @DavidH Antwort. Ich habe einige Probleme damit wurden behoben, ersetzt
inet_ntop
mitgetnameinfo
wodurch ein sauberer Ansatz. Beachten Sie, dass diese Erträge ein Wörterbuch, Karten interface-Namen ein array von IP-Adressen (eine Schnittstelle mehrere IPv4-und IPv6 mit Ihr verbunden, technisch). Es unterscheidet nicht zwischen IPv4 und IPv6:strf
- ist, dass eine helper-Funktion, die Sie in Ihrem code?Ja, sorry, es gibt ein paar Helfer in den obigen code.
err
undstrf
. Sie können ersetzen Sie einfachstrf
mit-stringWithCString:encoding:
.err
ist einNSLog
wrapper, der die Ausgänge der Datei & Linien-als auch. github.com/Lyndir/Pearl/blob/master/Pearl/...InformationsquelleAutor lhunath
@DavidH Antwort, funktioniert einwandfrei, bis ich dieses Ergebnis von einigen 4G-Mobilfunknetz:
Bin ich nicht über vpn, also habe ich keine Ahnung, warum ich hatte ein utun0/ipv6.
--- Aktualisiert ---
Ich weiter Debuggen dieses Problem und fand, dass ich bekommen kann eine gefälschte vpn-Adresse auch in anderen 4G-Netzen (iOS bug??),
Wenn ich vpn verwenden, bekomme ich dies:
So ist es utun1 NICHT utun0
Ohne herauszufinden, warum werde ich nur noch zum drop-vpn-check 🙁
---- update - - - - -
Hob ich einen bug (28131847) zu apple nach und antwortete: "Nicht alle utun Schnittstellen für VPN. Es gibt auch andere OS-Funktionen, die Nutzung utun-Schnittstellen."
Aber wenn ich mir die Frage, wie man eine gültige vpn-IP-Adresse, Ihre Antwort war eher enttäuscht, "Sie können gehen Sie in die Einstellungen -> VPN-und schauen Sie auf Ihre VPN-Konfiguration zu sehen, ob das VPN aktiv ist. In einigen Fällen können Sie sehen, die zugewiesene IP-Adresse auch da. Wir sind nun schließen diesen Fehlerbericht." 🙁
- - - - - update 2016/11/04 ----
Traf ich wieder das problem und ich brauche, um weiter zu modifizieren @DavidH Antwort, um es zu beheben:
War ich im 4G-Netz und habe diese Adresse:
Mit seiner ursprünglichen Antwort, die ich erhalten das wifi-IP fe80::8dd:7d92:4159:170e, was fake war und die Verbindung fehlgeschlagen ist.
So, ich veränderte den code, wie,
InformationsquelleAutor Qiulang
Große Lösung für swift in Diese Datei welches Ihnen alle details.
In Einem meiner app die ich brauche zu Holen, wifi-IP-Adresse. Benutzt habe ich die Antworten vor, die in swift 3 so:
In diesem code, stürzt Es ab, weil ich zu überprüfen
nil
in jeder Aussage, die ich verwendet haben, als optional mit?
. So ist es besser für mich gegeben verknüpfte Datei in meine Klasse. Es wird einfach für mich, jetzt prüfen wie:Habe ich analysiert string für
"."
da die Interface-Klasse gibt zwei interface in meinem iPhoneen0
- Adresse wie "fb00::" und " Adresse wie "101.10.1.1"Ok wird entsprechend aktualisieren, da es, wie hilfreich für mich zum besseren Verständnis
InformationsquelleAutor Max