• Programmazione Android
  • CORSI ONLINE
  • Web Agency

Logo

Corsi di programmazione web e mobile online
Navigation
  • Home
  • CORSI ONLINE
  • Tutorial Pratici
  • GUIDE COMPLETE
    • Corso completo di C
    • Corso videogame con Cocos2d
    • Programmazione Cocoa Touch
  • Sezioni
    • Libri e manuali
    • Tips & Tricks
    • Risorse utili
    • Strumenti di Sviluppo
    • Materiale OpenSource
    • Framework
    • Guide Teoriche
    • Guide varie
    • Grafica e Design
    • iPad
    • News
    • Video Tutorial
    • Windows Phone
  • Pubblicità
  • About
    • Chi siamo
    • Pubblicazioni
    • Collabora
    • Sostieni devAPP

T#017 – Ottenere l’indirizzo IP dell’iPhone/iPodTouch

By Francesco Burelli | on 9 Dicembre 2009 | 5 Comments
Senza categoria

Nella documentazione Apple non ci sono delle API specifiche per ottenere l’indirizzo IP dell’iPhone o iPodTouch, ma cercando su Google si può trovare un metodo, un po’ scorretto, ma funzionante. L’autore usa la classe NSHost per ricavarne gli indirizzi, ma questa, come da documentazione, può essere usata teoricamente solo per le applicazioni Mac e non per iPhone.

Indispettito da ciò ho cercato un metodo più “legale”: ho usato funzioni di più basso livello che sono incluse nelle librerie <netdb.h> e <arpa/inet.h>.

In queste librerie la funzione “chiave” è “gethostbyname(const char *name)” che restituisce una struttura contente tutte le informazioni della nostra macchina. Per trovare il nome del nostro host basti guardare nella documentazione che, sotto la classe NSProcessInfo, riporta un metodo per ottenere il nome dell’host appunto. Il nome, però, non è completo: manca della parte finale “.local” che informa della sua appartenenza alla rete locale.

Di seguito il codice del metodo:

-(NSString *)ottieniIP {
	// dichiaro le variabili che mi rerviranno
	struct hostent *myHost;
	struct in_addr **addr_list;
	char *mioIP;

	// ottengo il nome dell'host ovvero del dispositivo in rete
	NSString *nomeHost = [[NSProcessInfo processInfo] hostName];
	// aggiungo ".local" poichè indica la rete locale
	nomeHost = [nomeHost stringByAppendingFormat:@".local"];

	// ottengo l'host
	myHost = gethostbyname([nomeHost cStringUsingEncoding:1]);

	// ricavo tutti gli indirizzi dell'host
	addr_list = (struct in_addr **)myHost->h_addr_list;
    for(int i = 0; addr_list[i] != NULL; i++) {
        printf("%s \n", inet_ntoa(*addr_list[i]));
		mioIP = inet_ntoa(*addr_list[i]);
    }

	// restituisco l'ultimo indirizzo trovato
	return [NSString stringWithCString:mioIP encoding:1];

}
Share this story:
  • tweet

Tags: hostindirizzoipObjective-cprogrammazionesdkTutorial PraticiutilityXcode

Recent Posts

  • Parte il percorso programmatori iOS in Swift su devACADEMY.it

    20 Dicembre 2017 - 0 Comment
  • Android, crittografare dati velocemente con Encryption

    24 Settembre 2018 - 0 Comment
  • Sql2o, accesso immediato ai database tramite Java

    3 Settembre 2018 - 0 Comment
  • Okio, libreria per ottimizzare l’input/output in Java

    27 Agosto 2018 - 0 Comment

Related Posts

  • Microservizi per logiche applicative di grandi dimensioni

    27 Luglio 2016 - 0 Comment
  • Con Xcode 6.3 arriva il Crash Log Organizer

    26 Febbraio 2015 - 0 Comment
  • Xcode-project-generator: uno script per creare velocemente progetti Xcode

    21 Ottobre 2014 - 1 Comment

Author Description

5 Responses to “T#017 – Ottenere l’indirizzo IP dell’iPhone/iPodTouch”

  1. 9 Dicembre 2009

    Paolo

    Ciao,
    post interessante. Volevo segnalare solamente che l’aggiunta del ‘.local’ va fatta solo se tale codice viene usato sul dispositivo. Per il simulatore l’aggiunta non è necessaria (Xcode 3.1.4). Occorre racchiudere la riga di codice relativa all’interno di un #if .. #endif come segue:

    #if !(TARGET_IPHONE_SIMULATOR)
    nomeHost = [nomeHost stringByAppendingFormat:@”.local”];
    #endif

  2. 30 Agosto 2010

    Fabio

    Una curiosità, forse mi potrete aiutare.
    Ho un sito che rileva la nazionalità di un visitatore grazie a un sistema di geolocation molto semplice, basato sull’associazione di range di ip ad aree geografiche.
    Se mi collego da un’ADSL italiana mi vede come italiano, dagli Stati Uniti idem, e così via..
    Secondo voi vale anche per l’iPhone? Intendo, se vado in Germania, e mi connetto a Google con l’iPhone mi redirige su http://www.google.de ?

  3. 22 Ottobre 2010

    Alessandro

    ciao,
    a me interessa ottenere l’ UDID dell’iphone.
    Come si può fare?
    Grazie 🙂

  4. 22 Ottobre 2010

    Francesco Burelli

    Ciao, se guardi nella documentazione Apple troverai la classe UIDevice. Leggendo rapidamente penso tu possa ottenere quell’informazione eseguendo una cosa del ripo:

    NSString * UDID = [[UIDevice currentDevice] uniqueIdentifier];

  5. 21 Marzo 2014

    checcco

    Volevo ampliare il codice di cui sopra per creare uno scan network, per conoscere i dispositivi, nel caso di Lan, connessi. Sapete indicarmi come posso fare? in rete non trovo nulla sul tema.

Leave a Reply

Your email address will not be published. Required fields are marked *


*
*

Corso online di programmazione android e java

SEZIONI

  • Android
  • Comunicazioni
  • Contest
  • Corsi ed Eventi
  • Corso completo di C
  • Corso programmazione videogiochi
  • Framework
  • Grafica e Design
  • Guida rapida alla programmazione Cocoa Touch
  • Guide Teoriche
  • Guide varie
  • iPad
  • Le nostre applicazioni
  • Libri e manuali
  • Materiale OpenSource
  • News
  • Pillole di C++
  • Progetti completi
  • Risorse utili
  • Strumenti di Sviluppo
  • Swift
  • Tips & Tricks
  • Tutorial Pratici
  • Video Tutorial
  • Windows Phone

Siti Amici

  • Adrirobot
  • Allmobileworld
  • Apple Notizie
  • Apple Tribù
  • Avvocato360
  • Blog informatico 360°
  • bubi devs
  • fotogriPhone
  • GiovaTech
  • iApp-Mac
  • iOS Developer Program
  • iPodMania
  • MelaRumors
  • Meritocracy
  • SoloTablet
  • TecnoUser
  • Privacy & Cookie Policy
©2009-2018 devAPP - All Rights Reserved | Contattaci
devAPP.it è un progetto di DEVAPP S.R.L. - Web & Mobile Agency di Torino
Str. Volpiano, 54 - 10040 Leini (TO) - C.F. e P.IVA 11263180017 - REA TO1199665 - Cap. Soc. € 10.000,00 i.v.

devACADEMY.it

Vuoi imparare a programmare?

Iscriviti e accedi a TUTTI i corsi con un’unica iscrizione.
Oltre 70 corsi e migliaia di videolezioni online e in italiano a tua disposizione.

ISCRIVITI SUBITO