iOS 如何獲取手機外網IP位址(附內網IP位址)

2021-08-09 17:23:53 字數 2762 閱讀 5820

**:

查詢了一些方法,最初以為拿到的就是手機對外的公網位址,其實只是本地ip位址。下面把獲取手機內外網ip位址的方法總結下:

方法1:

首先匯入標頭檔案:

[objc]

view plain

copy

//ip位址需求庫

#import 

#import 

#import 

#import 

#import 

具體方法:

[objc]

view plain

copy

//獲取裝置ip位址

-(nsstring

*)getdeviceipaddresses  

ptr += sizeof

(ifr->ifr_name) + len;  

if(ifr->ifr_addr

.sa_family

!=af_inet) 

continue

;  if

((cptr = (

char

char

*)strchr(ifr->ifr_name,

':')) != 

null

) *cptr =

0;  

if(strncmp(lastname, ifr->ifr_name,ifnamsiz) == 0)

continue

;  memcpy(lastname, ifr->ifr_name,ifnamsiz);  

ifrcopy = *ifr;  

ioctl(sockfd,siocgifflags, &ifrcopy);  

if((ifrcopy

.ifr_flags

&iff_up) == 0)

continue

;  nsstring

*ip = [nsstring

stringwithformat

:@"%s"

,inet_ntoa(((

struct

sockaddr_in

*)&ifr->ifr_addr)->sin_addr)];  

[ipsaddobject

:ip];  

}  }  

close(sockfd);  

nsstring

*deviceip =

@"";  

for(

inti=

0; i 

.count

; i++)  

}  return

deviceip;  

}  

參考:方法2:

匯入兩個標頭檔案,此法只能獲取到wifi環境下的本地ip,比較簡潔

[objc]

view plain

copy

#import 

#import 

[objc]

view plain

copy

+ (nsstring

*)deviceipadress   

}  temp_addr = temp_addr->ifa_next;  

}  }  

freeifaddrs(inte***ces);  

//    nslog(@"手機的ip是:%@", address);

return

address;  

}  

二、獲取手機外網ip(公網ip)

網上找了很久獲取外網ip的方法,很多訪問**已經不能用了,能用的主要有2個,但是獲取到的ip位址不同,下面詳細介紹。

[objc]

view plain

copy

-(nsstring

*)devicewanipaddress  

return

(ipstr ? ipstr : 

@"");  

}  

訪問介面返回的json資料:

可能是此介面精確到了具體的區。。。)

[objc]

view plain

copy

-(nsstring

*)getwanipaddress  

return

@"";  

}  

訪問介面取到的資料:

參考:還有乙個介面可直接獲取到ip,但返回比較慢,可能返回失敗,不推薦。

[objc]

view plain

copy

nserror

*error;  

nsurl

*ipurl = [nsurl

urlwithstring

:@""

];  

nsstring

*ip = [nsstring

stringwithcontentsofurl

:ipurl

encoding

:nsutf

8stringencoding

error

:&error]; 

iOS 獲取手機外網IP位址的成功與失敗

一 獲取手機外網ip 公網ip 網上找了很久獲取外網ip的方法,很多訪問 已經不能用了,能用的主要有2個,但是獲取到的ip位址不同,下面詳細介紹。objc view plain copy nsstring devicewanipaddress else if code 1 訪問介面成功返回的json...

Android獲取外網和內網ip位址

獲取內網ip位址 param context return public static string getintranetipaddress context context catch socketexception e else if info.gettype connectivitymanag...

如何修改手機ip位址

手機相對於電腦那個更加的好用,可能兩種的使用需求不同,很多的方面無法進行比較,但是手機更方便攜帶,對於外出手機使用的可能會更多會,因此手機的 ip出現,是因為除去電腦工作,使用手機工作的是最多的,並且相對於電腦,手機更加的方便。網際網路發展迅速,所以很多時候我們在上網或者工作時都需要換ip,因為換i...