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.
InformationsquelleAutor MTA | 2011-03-27