IOS中如何擷取手機的當前IP,ios擷取當前ip
網上有許多類似的文章、在搜尋了資料以後、覺得下面的方法是最簡單的、
使用的時候直接把類方法拖到自己建立的分類中就行、
.h檔案
#import <Foundation/Foundation.h>
@interface NSObject (GetIP)
+ (NSString *)deviceIPAdress;
@end
.m檔案
#import "NSObject+GetIP.h"
#include <ifaddrs.h>
#include <arpa/inet.h>
上面的兩個標頭檔一定要匯入
@implementation NSObject (GetIP)
+ (NSString *)deviceIPAdress {
NSString *address = @"an error occurred when obtaining ip address";
struct ifaddrs *interfaces = NULL;
struct ifaddrs *temp_addr = NULL;
int success = 0;
success = getifaddrs(&interfaces);
if (success == 0) { // 0 表示擷取成功
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;
}
}
freeifaddrs(interfaces);
// NSLog(@"手機的IP是:%@", address);
return address;
}
@end