#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<errno.h>

#include<sys/types.h>

#include<sys/socket.h>

#include<netinet/in.h>

#include<arpa/inet.h>

#include<unistd.h>

//pch 文件导入

//扫描本地设备 --- 智能家居

-(void)scanLocalDevice

{

NSLog(@"开始扫描本地设备");

setvbuf(stdout, NULL, _IONBF, 0); // 不要缓冲区

fflush(stdout); // 清除缓冲区

int sock = -1;

//AF_INET : #define AF_INET 2 // internetwork: udp, tcp, etc.

// SOCK_DGRAM是基于UDP的,专门用于局域网,基于广播

// 0 : 调用的协议

if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1)

{

return;

}

const int opt = 1;

//设置该套接字为广播类型,

int nb = 0;

nb = setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char *)&opt, sizeof(opt));

struct sockaddr_in addrto;

bzero(&addrto, sizeof(struct sockaddr_in));

addrto.sin_family=AF_INET;

addrto.sin_addr.s_addr=htonl(INADDR_BROADCAST); // //广播地址:255.255.255.255

addrto.sin_port=htons(1025);

int nlen=sizeof(addrto);

while(1)

{

totalSearchTime += 1;

NSLog(@"-->%d",totalSearchTime);

sleep(1);

//从广播地址发送消息

char smsg[] = {"Are You Espressif IOT Smart Device?"};//与硬件约定的响应消息 硬件收到广播之后主动广播回主动发送自己的mac的地址和ip地址

long ret=sendto(sock, smsg, strlen(smsg), 0, (struct sockaddr*)&addrto, nlen);

if(ret<0){

}

else{

socklen_t size;

char buf[MAXDATASIZE];

memset(buf, 0, MAXDATASIZE);

recvfrom(sock,buf,MAXDATASIZE,0,(struct sockaddr *)&addrto,&size);

NSString *str = [NSString stringWithFormat:@"%s",buf];

NSArray * arry = [str componentsSeparatedByString:@" "];

NSString *tempstr = arry[1];

NSString *ip = arry[2];

NSRange range = [tempstr rangeOfString:@"."];

range.length = range.location;

range.location = 0;

range.location=range.length+1;

range.length = [tempstr length] - range.location;

NSString *mac = [tempstr substringWithRange:range];

NSArray *arr = [NSArray arrayWithObjects:ip,mac, nil];

NSLog(@"----------->   扫描到的IP 和 MAC --->IP = %@ Mac = %@",ip,mac);

[ListArray addObject:arr];

if (totalSearchTime == 20) {

totalSearchTime = 0;

[self getEqupmentIP];

break;

}

}

}

}

IOS 手机端搜索硬件设备 --- 物联网的更多相关文章

  1. 支付宝APP支付IOS手机端java后台版

    版权声明:http://blog.csdn.net/u012131769/article/details/76639527#t8 转载:http://blog.csdn.net/u012131769/ ...

  2. fiddler抓包工具 https抓取 ios手机端抓取

    fiddler抓包工具 https抓取 ios手机端抓取  转载链接:https://www.cnblogs.com/bais/p/9118297.html   抓取pc端https请求,ios手机端 ...

  3. ios 手机端 input 框上方有内阴影

    解决方案 方法1: <!--如果 ui 样式里有边框,可以用外层盒子设置边框--> input{ border:none; } 方法2: //在IOS下,input 和textarea表单 ...

  4. 简单方法让input date支持placeholder(包含ios手机端方法)

    <input class="baixin-quan-info-box-time" type="text" onfocus="(this.type ...

  5. 如何在ios手机端的Safari浏览器 中“查看网页源代码”

    在这里给大家分享一个很简单的用苹果手机无需越狱就可以查看网页源代码的方法,不过这个方法只用于苹果手机自带的Safari浏览器 随便添加一个safari 书签 (用于一会改为查看源码功能书签)进入书签 ...

  6. app内嵌h5页面在ios手机端滑动卡顿的解决方法

    1.带滚动条的dom需加样式 -webkit-overflow-scrolling: touch;2.去掉 width:100%; height:100%

  7. js判断手机端操作系统(Andorid/IOS)

    非常实用的js判断手机端操作系统(Andorid/IOS),并自动跳转相应下载界面 androidURL = "http://xxx/xxx.apk"; var browser = ...

  8. Fiddler抓取手机端(ios+android)APP接口数据(http+https)

    (1)android 环境要求: PC机和手机连接在同一网络下 工具下载地址: Fiddler网上可以下载,自行下载.注意:需要安装fiddlercertmaker(网上自行下载)进行认证 配置步骤: ...

  9. 监听微信端,手机端,ios端的浏览器返回事件,pc端关闭事件

    直接上代码了,可以监听微信端,手机端,iOS端的浏览器返回事件,关闭事件不支持 当进入该页面,我们就给这个history压入一个本地的连接.当点击返回.后退及上一页的操作时,就进行监听,在监听代码中实 ...

随机推荐

  1. 2 读取solr下的索引文件(lucene文件)

    import org.apache.lucene.analysis.Analyzer; import org.apache.lucene.analysis.standard.StandardAnaly ...

  2. CODEVS 3137 栈练习1

    3137 栈练习1 时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题目描述 Description 给定一个栈(初始为空,元素类型为整数,且小于等于100),只 ...

  3. php+mssql 已经写好的万能函数

    <?php /****************************************************************************************** ...

  4. php 实时推送代码

    网站质量不错的网站可以在百度站长平台/数据提交/sitemap栏目下看到实时推送的功能, 目前这个工具是邀请开放, 百度的实时推送的api接口可以实时推送我们新发布的文章, 保证百度在第一时间收录. ...

  5. Python读入与写出中文时出现乱码

    解决办法:重置sys模块,设置默认编码方式为utf-8. 在.py文件的开头添加下面两行代码: reload(sys) sys.setdefaultencoding('utf8')

  6. 答:我们公司的ASP.NET 笔试题,你觉得难度如何

    闲来无事,逛逛园子,发现有个面试题,觉得有意思.已自己的理解答来看看,不足之处,请多指教. 原文地址:http://www.cnblogs.com/leotsai/p/aspnet-tests-for ...

  7. Dijkstra算法C#实现及其布线运用

    大家好,我是小鸭酱,博客地址为:http://www.cnblogs.com/xiaoyajiang 以下是空调布线对Dijkstra算法的运用,采用C#实现. 问题:室内机多台,室外机一台.寻找室内 ...

  8. win7自由调整CMD窗口

    有如下命令,只需要改动相关参数即可以任意改变cmd窗口大小. mode con lines= mode con cols= color cls @cmd

  9. 董事长、总裁与CEO的区别与实质

    自从信息产业兴起以来,尤其是网络股泡沫产生以来,“CEO”在中国骤然成为一个流行词汇.总经理和总裁们纷纷改称CEO,这个缩写词比它的中译版“首席执行官”更简洁,在中国人心目中更有神圣感,于是便出现了今 ...

  10. 热点块引发的cache buffers cahins latch

    热点块引发的Cache buffer Chains latch: SQL语句即便适当进行了调优,有时也无法解决cache buffers cahins latch,若在编写SQL语句时的SQL工作方式 ...