Comment obtenir l'adresse ip externe en Objective-C
J'ai cherché un peu de code qui va m'aider à obtenir l'adresse ip que l'iPhone se connecter avec.
Je trouve celui-ci:
- (NSString *)getIPAddress
{
NSString *address = @"error";
struct ifaddrs *interfaces = NULL;
struct ifaddrs *temp_addr = NULL;
int success = 0;
//retrieve the current interfaces - returns 0 on success
success = getifaddrs(&interfaces);
if (success == 0)
{
//Loop through linked list of interfaces
temp_addr = interfaces;
while(temp_addr != NULL)
{
if(temp_addr->ifa_addr->sa_family == AF_INET)
{
//Check if interface is en0 which is the wifi connection on the iPhone
if([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"])
{
//Get NSString from C String
address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];
}
}
temp_addr = temp_addr->ifa_next;
}
}
//Free memory
freeifaddrs(interfaces);
return address;
}
mais le problème est qu'il me cet propriété intellectuelle
10.0.0.1
Comment faire pour obtenir l'adresse ip externe?
- Quel type d'adresse IP en attendez-vous? L'appareil est susceptible d'être en passant par une connexion WiFi ou 3G réseau, etc. par conséquent, vous n'êtes pas susceptible d'être en mesure de récupérer toute forme de véritables "externe" de l'adresse IP.
- Middaparka est à droite de l'appareil du point de vue de la 10.0.0.1 est son adresse IP externe.
Vous devez vous connecter pour publier un commentaire.
La meilleure façon d'obtenir votre adresse ip internet de code est à utiliser NSURLConnection.
Pour l'URL, vous pouvez utiliser:
http://www.whatismyip.com/m/mobile.asp
ou
http://checkip.dyndns.com/
Juste analyser les données de retour et vous avez votre adresse ip externe.
Regardez l'exemple dans ma deuxième Réponse ici.
En un mot il utilise *http://www.dyndns.org/cgi-bin/check_ip.cg*i pour obtenir le extenal I. P
Case d'Apple PortMapper, fait exactement ce que vous voulez.
De iOS7 c'est sans importance.