c - 如何限制通过蓝牙连接到设备的手机数量?

标签 c linux bluetooth bluez

应用场景:

Android 应用程序通过蓝牙连接到嵌入式设备,并在它们之间传输一些数据。每时每刻,只有一个应用程序可以控制嵌入式设备并向其发送数据。

开发环境:

linux、c/c++、bluez 堆栈、命令行工具,如 bluetoothctl。

蓝牙 4.0 允许多个从设备可以在蓝牙微微网中与主设备通信。

那么如何限制接入嵌入式设备的手机数量呢?

最佳答案

有了蓝牙4.0,一个slave只能连接一个master。另一方面,主设备可以有多个从设备(例如,在微微网中,您的 Android 设备可以连接到 8 个或更多从设备,但如果从设备是 4.0 设备,则它们不能连接到另一个主设备)。

Bluetooth 4.1 中引入了一个从设备可以连接到多个主设备的功能,称为 LE 链路层拓扑。在此功能之前,从站只能有一个连接。

因此,要回答您的问题,您无需执行任何操作来限制可以连接到您的嵌入式设备的电话数量。连接手机后,您的嵌入式设备将无法接受任何其他传入的 BLE 连接。

最后,实际上有一种方法可以确保您的从设备只连接到一个主设备,而不管使用的是什么版本的蓝牙。这是通过在连接后禁用广告来实现的。广告是接受传入连接的唯一方式,如果您的设备没有广告,那么远程设备甚至都看不到它。

有关详细信息,请参阅蓝牙规范 v5.1,第 6 卷,B 部分,第 1.1 节链路层状态。

希望对您有所帮助。

关于c - 如何限制通过蓝牙连接到设备的手机数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54759845/

相关文章:

python - 由 python subprocess.Popen(shell=True) 创建的进程的 pid 不是生成的 shell 的 pid

java - 类路径设置但 java.lang.NoClassDefFoundError com/google/protobuf/MessageOrBuilder 错误?

android - 在BluetoothChat示例中以非同步方式在Bluetooth上写入

bluetooth - 如何在Raspberry Pi上设置gatttool的BLE连接超时?

android - 在 Android 中为低功耗蓝牙实现互联网协议(protocol)支持配置文件 (IPSP)

c - gcc 如何处理 -Wtype-limits?

c - 使用函数进行矩阵乘法的警告

regex - Bash 隔离结果

c - c中的memset结构数组时出现段错误

编译器函数和可执行文件