【iOS】一键配网 组播实现
2021/6/1 10:21:28
本文主要是介绍【iOS】一键配网 组播实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、环境
1.UDP框架 GCDAsyncUdpSocket;
2.加密方式,采用aes_cfb128 iv为0 ;
3.抓包验证wireshark
二、结果
1.利用发送的地址将数据分包发送;D类地址从224.0.0.0-239.255.255.255,组播地址的后23bit映射到MAC层组播地址的后23bit;每次发送23bit数据,设备端根据规则可以收到数据,最后连接到路由器;
三、流程图
四、流程
1.初始化UDPSocket 与广播相同
_castSocket = [[GCDAsyncUdpSocket alloc] initWithDelegate:self delegateQueue:_castQueue];
(1)开启广播 Broadcast;
if (![_castSocket enableBroadcast:YES error:&error]) { UdpLog(@"enableBroadcast error:%@",error); }
(2)接收数据 beginReceiving;
if (![_castSocket beginReceiving:&error]) { UdpLog(@"beginReceiving error:%@",error); }
(3)指定端口 不指定则会随机分配;
2、数据发送
(1)发送地址
端口与设备端协商,这里以60000举例
local:port -> 239...* : 60000 + index
(2)数据
说明 | |
---|---|
dataByte | 总长度(1) + flag(1) + + pwdLen(1) + pwd + randLen(1) + rand+ ssidLen(1) + ssid + bssidLen + bssid + checkSum(1) |
ssid: | ssid为中文则采用utf-8编码,其他则为ASCII编码 |
pwd | pwd需要加密 |
rand | 随机数 |
bssid | bssid |
checkSum | 校验和 |
加密编码方式与广播相同
//生成随机数 - (NSData *)dataFromRand:(int)count{ Byte codeData[count]; for (int i = 0; i < count; i++) { codeData[i] = arc4random()%255 + 1; } return [NSData dataWithBytes:codeData length:sizeof(codeData)]; }
(3)发送结构
利用组播目的地址的后23bit发送数据
数据分为 239.index.data[n].data[n+1]
数据分为
说明 | |
---|---|
index | 数据序号 |
data | 数据按字节顺序 |
//生成地址 - (NSString *)ipStringWithData:(NSString *)dataString count:(int)count{ NSString *ipString = [NSString stringWithFormat:@"239.%d.%@",count,dataString]; return ipString; } //发送数据 [self.castClient sendData:[self zeroDataWithCount:1] toHost:ipString port:70000+_sendCount];
(4)传输规则
每包之间间隔20ms;间隔时间可按实际情况调整
(1) -> 239.0.data[0].data[1]
(2) -> 239.1.data[2].data[3]
(3) -> 239.2.data[4].data[5]
(4) -> 239.3.data[6].data[7]
…
(5)通过抓包查看
这篇关于【iOS】一键配网 组播实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12Axios库资料:新手入门必读教程
- 2024-11-11Axios库项目实战:新手入门教程
- 2024-09-29Axios库教程:初学者必备指南
- 2024-08-29Axios库资料:新手入门指南与基本使用教程
- 2024-03-14system bios shadowed
- 2024-03-14gabios
- 2024-02-07iOS应用提交上架的最新流程
- 2024-02-06打包 iOS 的 IPA 文件
- 2023-12-07uniapp打包iOS应用并通过审核:代码混淆的终极解决方案 ?
- 2023-11-25uniapp IOS从打包到上架流程(详细简单) 原创