描述:
低功耗蓝牙连接同时通信
最近学习低功耗蓝牙,与经典蓝牙不一样,低功耗蓝牙属于不保持连接的通信方式,也就是说低功耗蓝牙每次要通信先建立连接把要发送的数据发完了,就断开连接。下次通信还得再建立连接。由于不用保持连接,而且低功耗蓝牙建立连接非常快,所以这种方式比较省电。问题来了,如果一个设备正在同另一个设备通信,连接还没断开,那它还能与其他设备建立连接并通信吗?还是说必须先断开连接,才能与下一个设备进行连接?
还有低功耗蓝牙号称一个主设备可以与无数从设备建立连接,那设备能记录的连接信息能有多少?如果有10000个连接信息,那重新连接的时候光遍历一遍连接记录表就要花好长时间了。
低功耗蓝牙建立连接需要用户去参与吗?特别是一个从设备,如果它进行广播,是不是任何一个低功耗蓝牙设备都可以随意连上这个从设备,这样不是太容易遭受DOS攻击了吗?
解决方案1:
问题来了,如果一个设备正在同另一个设备通信,连接还没断开,那它还能与其他设备建立连接并通信吗?还是说必须先断开连接,才能与下一个设备进行连接?
答:补充楼上说的,android协议栈最多支持4个从设备连接。
还有低功耗蓝牙号称一个主设备可以与无数从设备建立连接,那设备能记录的连接信息能有多少?如果有10000个连接信息,那重新连接的时候光遍历一遍连接记录表就要花好长时间了。
答:蓝牙协议栈如果一下子搜到大量蓝牙地址会崩溃,虽然协议栈做了一些处理,但是还是会有问题,一般做协议栈要限制搜到蓝牙地址的数量。
低功耗蓝牙建立连接需要用户去参与吗?特别是一个从设备,如果它进行广播,是不是任何一个低功耗蓝牙设备都可以随意连上这个从设备,这样不是太容易遭受DOS攻击了吗?
答:从设备是需要用户参与,主要是主动唤醒从设备,节省功耗。另外,别的设备连接到你的从设备不代表他的连接是不安全的,这个理解是有错误的。
问题来了,如果一个设备正在同另一个设备通信,连接还没断开,那它还能与其他设备建立连接并通信吗?(这个要不同厂家芯片不同协议栈区分对待,比如说iPhone,作为BLE主设备时,能够同时连接7到8个BLE从设备,TI的CC2541当主设备时,某一个时刻有且仅有一个从设备与之保持连接状态)还是说必须先断开连接,才能与下一个设备进行连接?(另外BLE设备分主从,主扫描,从广播,从设备在一个时刻只能与一个主设备连接)
还有低功耗蓝牙号称一个主设备可以与无数从设备建立连接,那设备能记录的连接信息能有多少?如果有10000个连接信息,那重新连接的时候光遍历一遍连接记录表就要花好长时间了。(Bluetooth SIG官方制定的文档确实是可以让主设备在同一时刻连接无线多个从设备,但实际应用中,看内存,看调度能力,看具体芯片设计和定位成本考虑,简单的微小迷你BLE设备,一般只支持单链接)
低功耗蓝牙建立连接需要用户去参与吗?(主要看应用程序设计方式,可以设计成主设备自动连接自己关心的从设备,也可以设计成主设备扫描并在UI上列举出扫到的从设备,然后让用户选择再连接。)特别是一个从设备,如果它进行广播,是不是任何一个低功耗蓝牙设备都可以随意连上这个从设备,这样不是太容易遭受DOS攻击了吗?(协议规范里面确实是一些主设备能够连一些从设备,安全问题可以在应用层解决,也可以使用BLE的安全规规范层制定的一些标准过程。)
建议去 www.bluetooth.org 去下载相关规范学习。