获取手机设备的IP信息:

#import <ifaddrs.h>

#import <arpa/inet.h>

// Get IP Address

- (NSString *)getIPAddress {

NSString *address = @"error";

struct ifaddrs *interfaces = NULL;

struct ifaddrs *temp_addr = NULL;

int success = 0;

// retrieve the current interfaces - returns 0 on success

success = getifaddrs(&interfaces);

if (success == 0) {

// Loop through linked list of interfaces

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;

}

}

// Free memory

freeifaddrs(interfaces);

return address;

}

//  Get SSID

#import <SystemConfiguration/CaptiveNetwork.h>

- (NSString *)currentWifiSSID

{

NSString *ssid = nil;

NSArray *ifs = (__bridge   id)CNCopySupportedInterfaces();

for (NSString *ifname in ifs) {

NSDictionary *info = (__bridge id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifname);

if (info[@"SSID"])

{

ssid = info[@"SSID"];

}

}

return ssid;

}

#import <sys/socket.h>

#import <sys/sockio.h>

#import <sys/ioctl.h>

#import <net/if.h>

#import <arpa/inet.h>

- (NSString *)getDeviceIPIpAddresses

{

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

if ( sockfd < 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];

}

}

return deviceIP;

}

IOS开发之WIFI及IP相关的更多相关文章

  1. ios开发之Info.plist文件相关配置

    前言:在iOS开发中有些情况下需要对Info.plist文件进行配置,以下介绍几种相关配置.以后遇到需要配置的再更新... 开发环境:swift3.0.1,Xcode8.1 一,项目中需要使用第三方字 ...

  2. iOS开发之WIFI,3G/4G两种网络同时使用技巧

    最近遇到一个比较奇葩的需求:App与硬件通过WiFi LAN通信, 同时App需要与服务器通过3G/4G WAN通信,如下图: 众所周知,手机同时打开WiFi和3G时候,会优先走WiFi.这个该如何实 ...

  3. iOS开发之loadView、viewDidLoad及viewDidUnload的关系

    iOS开发之loadView.viewDidLoad及viewDidUnload的关系 iOS开发之loadView.viewDidLoad及viewDidUnload的关系    标题中所说的3个方 ...

  4. iOS开发之info.pist文件和.pch文件

    iOS开发之info.pist文件和.pch文件 如果你是iOS开发初学者,不用过多的关注项目中各个文件的作用.因为iOS开发的学习路线起点不在这里,这些文件只会给你学习带来困扰. 打开一个项目,我们 ...

  5. iOS开发之WKWebView简单使用

    iOS开发之WKWebView简单使用   iOS开发之 WKWebVeiw使用 想用UIWebVeiw做的,但是突然想起来在iOS8中出了一个新的WKWebView,算是UIWebVeiw的升级版. ...

  6. 李洪强iOS开发之iOS社区收集

    李洪强iOS开发之iOS社区收集 项目 简述 github 全球最大的代码仓库,无论是iOS开发还是Android开发没有人不知道这个网站,它也是一个社区,你可以去follow(关注)某些人或公司. ...

  7. 李洪强iOS开发之iOS好文章收集

    李洪强iOS开发之iOS好文章收集 该文收集朋友们转发或自己的写的技术文章,如果你也有相关的好文章,欢迎留言,当好文章多的时候,我会对这些好文章进行分门别类 文章 简述 日期 直播服务配置 使用 ng ...

  8. iOS 开发之 GCD 不同场景使用

    header{font-size:1em;padding-top:1.5em;padding-bottom:1.5em} .markdown-body{overflow:hidden} .markdo ...

  9. android开发之 Wifi的四个类

    android开发之 Wifi的四个类 在Android中对Wifi操作,android本身提供了一些实用的包,在android.net.wifi包以下.简介一下: 大致能够分为四个基本的类ScanR ...

随机推荐

  1. Xamarin Android 真机调试时闪退

    方法1:引起此问题的原因一般是因为 Mono Shared Runtime 在手机上没有运行,这个程序相当于.net运行时,没有运行的话用C#开发的程序自然无法运行. 解决方法是将此程序设置为自动运行 ...

  2. 为 mysql 数据表添加主键

    DROP TABLE IF EXISTS `sdo_actData`.`actCDKey`; CREATE TABLE `sdo_actData`.`actCDKey` ( `RoleID` ) ' ...

  3. angularjs backbone 集成requirejs 模块化

    首先认识requirejs requirejs是个包加载器,核心功能是模块化管理,可以实现按需加载. 重点是明白 模块化不是按需加载. 模块化的意义: 是通过代码逻辑表明模块之间的依赖关系和执行顺序, ...

  4. 配置fabric-crashlytics教程

    1. 注册账户 登录网站  https://try.crashlytics.com/ 来注册新的账户,审核通过时间为几个小时或者1到2天不等.然后注册时候输入的邮箱就会收到如下的邀请涵 2. acco ...

  5. kafka 命令行操作

    1.创建主题(topic) bin/kafka-topics.sh --create --zookeeper m6:2181 --replication-factor 1 --partitions 1 ...

  6. nginx执行文件替换掉之后重启提示permission denied

    重启的时候显示 -bash: /usr/local/nginx/sbin/nginx: Permission denied 进入nginx执行文件的目录:

  7. oracle数据导出工具sqluldr2

    oracle数据导出工具sqluldr2可以将数据以csv.txt等格式导出,适用于大批量数据的导出,导出速度非常快.导出后可以使用oracle loader工具将数据导入.下载完sqluldr2,工 ...

  8. 从零开始学Linux[一]:基本命令:系统信息、目录、文件、文件编辑

    摘要:linux基础学习:系统信息.目录.文件查找.文件操作.查看文件内容及大小.软链接.VIM使用. 现在Linux的使用非常普遍.对于一个小白来说,满屏幕的字母,看起来就是一头雾水~   目前由于 ...

  9. csuoj 1503: 点到圆弧的距离

    http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1503 1503: 点到圆弧的距离 时间限制: 1 Sec  内存限制: 128 MB  Speci ...

  10. [eclipse] Server at localhost was unable to start within 45 seconds.

    When debuging in the eclipse with Tomcat, i meet these error: Server Tomcat v7.0 Server at localhost ...