2010-08-21 1 views

ответ

5
#include <netinet/in.h> 
#include <arpa/inet.h> 
#include <net/if.h> 
#include <ifaddrs.h> 

- (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; 
} 
+1

не работает, у него есть ошибки – aryaxt

0

Ваш сервер должен транслировать себя, используя mDNS protocol.

Затем на iPhone вы можете просто использовать gethostbyname, чтобы получить IP address. У вас также есть специальный API для этого: DNS Service Discovery C Reference.

 Смежные вопросы

  • Нет связанных вопросов^_^