iOS 擷取本地IP地址

來源:互聯網
上載者:User

原文出自:http://blog.zachwaugh.com/post/309927273/programmatically-retrieving-ip-address-of-iphone 

For my app, QuickPic, I needed to show the user the IP address of their iPhone so they could type in the URL to the browser. The iPhone SDK provided no simple way to get the IP Address for the wifi connection. There are some undocumented methods that work ([NSHost addresses]), but I didn’t want to risk them pulling that out of there and my app breaking. So I wrote some C code (cobbled together from various sources) that will loop through the network interfaces and retrieve the IP address.

Here’s an Objective-C method to retrieve the IP address of the wifi connection as a NSString.

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

Update (7/10/09): if this isn’t working for you you may need to include the following C headers in the top of your class implementation as well

#include <ifaddrs.h>#include <arpa/inet.h>

Note: this code will work with the Simulator as well though the interface may not be en0. The iPhone Simulator seems to just use the underlying active Mac OS X network interface. On my macbook pro using wifi, this is en1, but your mileage may vary.

This will also work in Mac OS X since the iPhone OS and Mac OS X both use a lot of the same unix underpinnings.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.