iOS开发-获取设备IP

Posted sunshine-zzz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS开发-获取设备IP相关的知识,希望对你有一定的参考价值。

获取设备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 = [ NSMutableArray array ];                 int BUFFERSIZE = 4096 ;         struct ifconf ifc;         char buffer[BUFFERSIZE], *ptr, lastname[ IFNAMSIZ ], *cptr;         struct ifreq *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 = ( struct ifreq *)ptr;                         int len = sizeof ( struct sockaddr );                         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 = [ NSString stringWithFormat : @"%s" , inet_ntoa ((( struct sockaddr_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 = [ NSString stringWithFormat : @"%@" ,ips. lastObject ];                                                             myIP = deviceIP;     NSLog ( @"deviceIP========%@" ,deviceIP);     return deviceIP;    









以上是关于iOS开发-获取设备IP的主要内容,如果未能解决你的问题,请参考以下文章

转载-iOS获取设备IP地址

如何在 iOS 设备上获取关联接入点的 IP 地址

获取iOS设备ip地址

ios微信支付invalid spbill_create_ip 获取设备ip错误

iOS之WiFi IP相关

Swift - 获取设备的 WIFI IP 地址