2008-11-04 5 views

Répondre

4

Vous pouvez essayer d'utiliser semblable à ce service: Whatismyip et capturer la chaîne :)

Crédit Cookbok, 2e éd iPhone Erica Sadun Developer page 555.

13

Si vous voulez que le externe Adresse IP (celle utilisée pour se connecter depuis l'extérieur du réseau local), vous devez interroger un serveur sur le réseau externe. Une recherche rapide a donné les résultats suivants: http://checkip.dyndns.org, http://www.whatismyip.com. Il est assez simple de charger la page en utilisant par ex.

[NSData dataWithContentsOfURL:url]

et d'effectuer une manipulation de chaîne pour récupérer l'adresse IP.

Si vous voulez que le interne adresse IP (celui attribué par exemple par DHCP sur votre appareil), ce que vous pouvez généralement faire est de résoudre le nom d'hôte de l'appareil, à savoir


/* 
Returns the local IP, or NULL on failure. 
*/ 
const char* GetLocalIP() { 
    char buf[256]; 
    if(gethostname(buf,sizeof(buf))) 
    return NULL; 
    struct hostent* he = gethostbyname(buf); 
    if(!he) 
    return NULL; 
    for(int i=0; he->h_addr_list[i]; i++) { 
    char* ip = inet_ntoa(*(struct in_addr*)he->h_addr_list[i]); 
    if(ip != (char*)-1) return ip; 
    } 
    return NULL; 
} 
+4

+1 pour l'adresse IP interne code. –

+1

parfois mes utilisateurs obtiennent null, savez-vous quelle est la raison? – HelmiB

+0

Désolé de cogner un vieux fil, mais une chance que quelqu'un puisse m'aider à convertir cela en swift? – fischgeek

Questions connexes