1. 程式人生 > >iOS怎樣獲取手機的ip地址

iOS怎樣獲取手機的ip地址

     第一次寫部落格,以後大家多多支援:

經常在電視劇裡面看黑客盜取密碼。。。。。好崇拜,我也在不斷的學習,學習ios一段時間了,我在想:“怎樣獲取蘋果手機的ip地址呢?”,於是我就百度,經過查詢資料,終於找到了一種方法:

1.新增這五個庫(在聯網的情況下)

#import <sys/socket.h>

#import <sys/sockio.h>

#import <sys/ioctl.h>

#import <net/if.h>

#import <arpa/inet.h>

2.寫一個方法

- (NSString *)getDeviceIPIpAddresses

{

int sockfd =socket(AF_INET,SOCK_DGRAM, 0);

//    if (sockfd <</span> 0) return nil;

NSMutableArray *ips = [NSMutableArrayarray];

int BUFFERSIZE =4096;

structifconf ifc;

char buffer[BUFFERSIZE], *ptr, lastname[IFNAMSIZ], *cptr;

structifreq *ifr, ifrcopy;

    ifc.ifc_len = BUFFERSIZE;

    ifc.ifc_buf = buffer;

if (ioctl(sockfd,SIOCGIFCONF, &ifc) >= 0){

for (ptr = buffer; ptr < buffer + ifc.ifc_len; ){

            ifr = (structifreq *)ptr;

int len =sizeof(structsockaddr);

if (ifr->ifr_addr.sa_len > len) {

                len = ifr->ifr_addr.sa_len;

            }

            ptr += sizeof(ifr->ifr_name) + len;

if (ifr->ifr_addr.sa_family !=AF_INET) continue;

if ((cptr = (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 = [NSStringstringWithFormat:@"%s",inet_ntoa(((structsockaddr_in *)&ifr->ifr_addr)->sin_addr)];

            [ips addObject:ip];

        }

    }

close(sockfd);

NSString *deviceIP =@"";

for (int i=0; i < ips.count; i++)

    {

if (ips.count >0)

        {

            deviceIP = [NSStringstringWithFormat:@"%@",ips.lastObject];

        }

    }

NSLog(@"deviceIP========%@",deviceIP);

return deviceIP;

}


3.呼叫本方法即可

 [selfgetDeviceIPIpAddresses];


就這麼簡單---------問題解決了