iOS 获取本地IP地址
2015-08-06 15:01
696 查看
原文出自: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 iPhoneSDK 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 togetherfrom 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 successsuccess = getifaddrs(&interfaces);if (success == 0) {// Loop through linked list of interfacestemp_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 iPhoneif ([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"]) {// Get NSString from C Stringaddress = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];}}temp_addr = temp_addr->ifa_next;}}// Free memoryfreeifaddrs(interfaces);return address;}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.
相关文章推荐
- iOS 顶部高斯模糊导航栏 + 页面内容穿越底部导航栏效果
- iOS开发中讯飞语言的使用
- iOS开发系列--iOS程序开发概览
- 强大的iOS开发必备工具
- 十个好用的 iOS 开发辅助工具与资源
- CocoaPods安装和使用教程
- 关于iOS的GCD的介绍以及使用
- IOS开源库收集整理
- iOS之NSMutableDictionary导致程序崩溃:'NSInternalInconsistencyException'
- ios ViewController 页面跳转
- IOS开发 工具片篇
- iOS ——版本更新检测 判断应用版本和升级提示
- [转] iOS 开发:绘制像素到屏幕
- iOS风格的Titlebar
- iOS用户点击事件处理
- 查看iOS真机日志
- iOS设计模式之中介者模式
- iOS_导航栏的navigationBar.hidden与navigationBarHidden的区别
- iOS开发之-自定义设置字体
- iOS The identity used to sign the executable is no longer valid