是否可以将多个蓝牙客户端设备连接到服务器托管的相同UUID(服务)?

时间:2018-06-22 06:28:27

标签: android bluetooth uuid android-bluetooth simultaneous

问题陈述: 设备A的android蓝牙服务器应用正在运行并正在监听连接(uuid说XXXX-1234)。

我想编写一个客户端应用程序(将使用相同的UUID:XXXX-1234进行连接),并且可以安装在多个设备(每个Piconet最多可安装7个设备的B,C,D等)上,并且它们同时连接并保持与服务器的连接。 目标是从服务器应用程序向所有android客户端应用程序发送通用数据。

在实施此操作之前, 我有以下几个问题:

1)是否可以将多个客户端与具有相同UUID的服务器应用程序连接?

    根据我的理解,第一个设备(B)应该可以正常连接,但是当我尝试连接下一个设备(C)时,我不确定是否允许连接?因为设备A中的监听套接字已经与设备B连接...

2)SDP查找是否还列出了那些已经连接的UUID?

  • 我之所以这样问是因为,如果不是,那么我可以避免连接到其他应用已使用的UUID。

  • 因此,可以在服务器中对一组UUID进行硬编码,以创建多个套接字,而不必在服务器中仅使用一个UUID,并且可以在客户端应用程序上使用同一组UUID来检查是否有任何UUID可用,并且可用于启动连接。

由于同一客户端应用程序将安装在多个设备上,因此我希望每个应用程序仅连接到服务器应用程序的1个UUID /服务。如果发现所有UUID都可用,则应该创建与所有UUID的连接。

我将非常感谢任何潜在客户。 预先感谢。

1 个答案:

答案 0 :(得分:0)

是的,如果服务器支持这种连接是可能的。我不确定android,但是Bluetooth并没有限制。

B; uetooth仅使用UUID来描述服务。 RFCOMM连接(我想您正在谈论RFCOMM)使用称为Channel的东西来执行连接。您可以在不同的频道上运行几个相同的UUID。客户端连接到通道号。频道号可以是1到31。

然后回到您的任务。如果Android不允许在同一RFCOMM通道上接受多个连接,则可以执行以下操作(就像我们通常对仅允许到服务器的单个连接的BlueSoleil所做的那样):

  1. 使用第2个频道的UUID启动第一个服务器。
  2. 一旦连接客户端,请删除SDP并使用相同的UUID但使用通道3启动下一个服务器。
  3. 对每个连接的客户端增加通道号执行相同的操作。
  4. 当客户端断开连接时,如果其他服务器正在运行,则将服务器置于保留状态,以便在新客户端连接时将其打开。

类似的东西。但我认为Android应该允许连接到同一频道的客户端不止一个。