iOS 獲取手機外網和內網IP地址
//獲取外網IP 方法一:
-(NSString *)getWANIPAddress {
NSError *error;
NSURL *ipURL = [NSURL URLWithString:@"http://pv.sohu.com/cityjson?ie=utf-8"];
NSMutableString *ip = [NSMutableString stringWithContentsOfURL:ipURL encoding:NSUTF8StringEncoding error:&error];
//判斷返回字串是否為所需資料
if ([ip hasPrefix:@"var returnCitySN = "]) {
//對字串進行處理,然後進行json解析
//刪除字串多餘字串
NSRange range = NSMakeRange(0, 19);
[ip deleteCharactersInRange:range];
NSString * nowIp =[ip substringToIndex:ip.length-1];
//將字串轉換成二進位制進行Json解析
NSData * data = [nowIp dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary * dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSLog(@"%@",dict);
return dict[@"cip"] ? dict[@"cip"] : @"";
}
return @"";
}
//獲取手機外網IP 方法二
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
NSURL *ipURL = [NSURL URLWithString:@"http://ip.taobao.com/service/getIpInfo2.php?ip=myip"];
NSData *data = [NSData dataWithContentsOfURL:ipURL];
NSDictionary *ipDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSString *ipStr = nil;
if (ipDic && [ipDic[@"code"] integerValue] == 0) { //獲取成功
ipStr = ipDic[@"data"][@"ip"];
}
NSLog(@"===%@",ipStr ? ipStr : @"");
dispatch_async(dispatch_get_main_queue(), ^{
//do something;
});
});
//獲取手機內網 IP 方法一
+(NSString *)getIPAddress {
NSString *address = @"error";
struct ifaddrs *interfaces = NULL;
struct ifaddrs *temp_addr = NULL;
int success = 0;
// 檢索當前介面,在成功時,返回0
success = getifaddrs(&interfaces);
if (success == 0) {
// 迴圈連結串列的介面
temp_addr = interfaces;
while(temp_addr != NULL) {
if(temp_addr->ifa_addr->sa_family == AF_INET) {
// 檢查介面是否en0 wifi連線在iPhone上
if([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"]) {
// 得到NSString從C字串
address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];
}
}
temp_addr = temp_addr->ifa_next;
}
}
// 釋放記憶體
freeifaddrs(interfaces);
return address;
}
//獲取手機內網 IP 方法二
//必須在有網的情況下才能獲取手機的IP地址
+ (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(@"%@", address);
return address;
}
相關文章
- 獲取手機外網IP
- 獲取本地的IP地址(內網)內網
- 用Linux命令列獲取本機外網IP地址Linux命令列
- 如何獲取外網IP和IP的資訊
- iOS 獲取裝置uuid,公網ip,手機ip等資訊iOSUI
- 獲取外網出口ip
- curl 獲取外網IP
- 工具網站推薦 - 獲取本機外網IP網站
- 前端Js獲取本網IP和外網IP方法總彙前端JS
- java獲取ip地址和mac地址JavaMac
- Oracle中獲取主機名和IP地址Oracle
- jQuery獲取本機ip地址jQuery
- Java獲取本機ip地址Java
- Java 中獲取MAC地址 和IP地址JavaMac
- qt獲取本機IP地址、計算機名、網路連線名、MAC地址、子網掩碼、廣播地址QT計算機Mac
- 【iOS開發】獲取區域網IPiOS
- 在cmd中獲取ip地址和主機名
- 實用Linux下獲取公網IP地址Linux
- Android手機怎麼獲取印表機的IP地址呢Android
- iOS專案開發實戰——獲取本機IP地址iOS
- java獲取本機的ip地址Java
- 獲取網路卡 IP
- saltstack獲取IP地址
- 獲取IP地址方法
- 獲取IP地址命令
- Java獲取本機名稱、本機MAC地址、IP地址JavaMac
- 區域網內獲取周圍裝置的ip和埠
- android獲取手機ipAndroid
- 網路卡無法獲取IP地址自己給他找個
- Python 基礎練習 —— 獲取本機 Mac 地址、ip 地址和主機名PythonMac
- ASPNET獲取IP地址 MAC地址Mac
- IP地址、子網掩碼、網路號、主機號、網路地址、主機地址
- 美國ip地址如何獲取?
- 獲取真實IP地址
- 國外免費代理ip地址密碼如何獲取?密碼
- Windows 8系統有線網路卡自動獲取IP地址Windows
- android 獲取裝置IP和Mac地址AndroidMac
- 巧用C# 取外網IPC#