我有两个Android设备。一个充当服务器,另一个充当客户端。客户端连接到服务器并请求文件 - 这是在客户端上的一个线程和服务器上的一个线程上完成的,这样两者都可以继续执行他们想要的操作。
然后,客户端再次尝试连接到服务器以请求另一个文件。现在我在尝试连接时遇到java.io.IOException: Device or resource busy
(socket.connect()
)。是因为蓝牙(在Android上)只允许两个设备之间的一个通道? (如果它是另一个设备它会工作,但如果它是相同的,它不会?)请注意,两个尝试都使用相同的服务名称和UUID。
即使错误特定于我的代码,我也想知道是否是这种情况。
系统: android 2.2.1与bluecove蓝牙库进行通信。
答案 0 :(得分:6)
绝对不能使用相同的UUID(通用UNIQUE标识符)。
参考资料来自here
也许不止一个。您可以使用服务器/客户端样式连接多个设备,您可以尝试将其中一个设备设置为服务器,并在另一个设备上启动多个客户端。我的第一个猜测是启动几个客户端线程,但您可能必须找到一种方法来更改每个线程的MAC地址。
Here您可以找到有关如何更改Mac地址的其他讨论,但仅适用于有根设备。对于没有根的人,我找不到任何其他东西。不知道如何以编程方式执行此操作,但它可能会给你一个开始。
Here讨论了如何在服务器中同时连接多个客户端。我从this question到达那里。 (我想这可能是你最近的一次拍摄)
Here您讨论了点对点网络。
答案 1 :(得分:1)
AFAIK,蓝牙连接时无法实现多重连接。蓝牙连接API默认为同步,因此一次只能连接一个连接。所以你不能执行多个连接。
然而,可以通过另一种方式实现,例如建立一个连接,对其执行2秒操作,然后创建另一个连接并执行2秒操作,就像在正常的多任务操作系统中一样。