iOS 获取本地IP地址
2016-12-15 18:50
309 查看
原文出自:http://blog.zachwaugh.com/post/309927273/programmatically-retrieving-ip-address-of-iphone
直接导入两个头文件#include <ifaddrs.h> #include <arpa/inet.h>
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.
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
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.
直接导入两个头文件#include <ifaddrs.h> #include <arpa/inet.h>
然后建一个NSString的分类,把下面的方法复制过去,然后把实例方法改为类方法,直接调用即可
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.
相关文章推荐
- iOS 获取本地设备相关信息,如:IP地址
- iOS 获取本地设备IP地址
- iOS 获取本地IP地址
- iOS获取本地ip地址
- IOS获取本地IP地址以及网关IP地址
- iOS 获取本地IP地址
- iOS 获取本地设备IP地址
- iOS 获取本地IP地址
- 获取iOS设备当前ip地址
- Javascript与Activex交互获取本地mac,ip地址的代码
- Java中获取本地IP地址
- 获取iOS设备当前ip地址
- live555学习心得二(获取本地IP地址方法1)
- c#获取本机ip地址|获取本机的本地上网IP地址
- ip地址获取本地所在地理区域
- 利用ioctl获取本地ip地址
- 获取本地的IP地址
- 获取数据库连接字符串及本地数据库IP地址
- linux 下获取本地IP地址
- 获取本机的本地上网IP地址