您的位置:首页 > 其它

获取本地ip方法

2012-10-30 16:52 423 查看
第一步:文件包含下面头文件

#import <ifaddrs.h>

#import <arpa/inet.h>

第二步:获取本地ip的方法
+ (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)];
}

else
if ([[NSString
stringWithUTF8String:temp_addr->ifa_name]
isEqualToString:@"en1"]){

// Get NSString from C String
address = [NSString
stringWithUTF8String:inet_ntoa(((struct
sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];
}

else if
([[NSString
stringWithUTF8String:temp_addr->ifa_name]
isEqualToString:@"lo0"]){

// 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: