Wie kann ich in Swift eine echte IP-Adresse von der DNS-Abfrage erhalten?

8

Ich möchte das IP-Kleid (wie 192.168.0.1 oder 87.12.56.50) von DNS-Abfrage in Swift erhalten. Ich habe es 100 Mal mit 100 verschiedenen Methoden versucht ... Nichts hat mir geholfen, also muss ich um Hilfe bitten (ich hoffe es gibt eine Menge Leute hier;)) Das ist mein Code bisher:

%Vor%

OK ... Dies sind die Links für den Code, den ich versucht habe, ohne Erfolg zu implementieren: Ссылка
So führen Sie eine DNS-Abfrage auf iOS aus
Erstellen Sie ein Array in Swift aus einem NSData-Objekt
Unterstützt CFHostGetAddressing () IPv6-DNS-Einträge?
Machen Sie eine einfache DNS-Suche in Swift Also, wenn wir mit unsinnigen negativen Abstimmungen für diese Frage fertig sind, können wir versuchen, eine Lösung zu finden und anderen Menschen (wie mir) zu helfen.

    
Hristo Atanasov 17.09.2014, 12:26
quelle

1 Antwort

24

Ihr Code ruft die Adresse als "Socket-Adresse" -Struktur ab. getnameinfo() kann verwendet werden, um die Adresse in eine numerische IP-Zeichenkette umzuwandeln (Code recycelt von Ссылка , jetzt auf Swift 2 aktualisiert:

%Vor%

Ausgabe (Beispiel): 173.194.112.147

Beachten Sie auch die Verwendung von takeRetainedValue() in der ersten Zeile, weil CFHostCreateWithName() hat im Namen "Create" und gibt daher a (+1) zurück Objekt.

Update für Swift 3 / Xcode 8:

%Vor%

Oder, um alle IP-Adressen für den Host zu erhalten:

%Vor%     
Martin R 17.09.2014, 13:01
quelle

Tags und Links