您可以在Android中的相同两个设备之间建立多个蓝牙连接吗?

Wil*_*iam 6 android bluetooth bluecove

我有两个Android设备.一个充当服务器,另一个充当客户端.客户端连接到服务器并请求文件 - 这是在客户端上的一个线程和服务器上的一个线程上完成的,这样两者都可以继续执行他们想要的操作.

然后,客户端再次尝试连接到服务器以请求另一个文件.现在我java.io.IOException: Device or resource busy在尝试连接(socket.connect())时得到了一个.是因为蓝牙(在Android上)只允许两个设备之间的一个通道?(如果它是另一个设备它会工作,但如果它是相同的,它不会?)请注意,两个尝试都使用相同的服务名称和UUID.

即使错误特定于我的代码,我想知道是否是这种情况.

系统: android 2.2.1与bluecove蓝牙库进行通信.

cai*_*ci2 6

绝对不能使用相同的UUID(通用UNIQUE标识符).

参考资料来自这里

也许不止一个.您可以使用服务器/客户端样式连接多个设备,您可以尝试将其中一个设备设置为服务器,并在另一个设备上启动多个客户端.我的第一个猜测是启动几个客户端线程,但您可能必须找到一种方法来更改每个线程的MAC地址.

在这里,您可以找到有关如何更改您的mac地址的另一个讨论,但仅适用于root设备.对于没有根的人,我找不到任何其他东西.不知道如何以编程方式执行此操作,但它可能会给你一个开始.

这里讨论了在服务器中同时连接多个客户端.我从这个问题到达那里.(我想这可能是你最近的一枪)

在这里,您将讨论点对点网络.


小智 1

AFAIK,在蓝牙连接的情况下不可能实现多重连接。蓝牙连接 API 默认情况下是同步的,因此一次只能进行一个连接。所以你不能执行多个连接。

然而,也可以采用另一种方式,例如建立一个连接,对其执行 2 秒操作,然后创建另一个连接并执行 2 秒操作,就像在正常的多任务操作系统中一样。