我正在尝试创建一个蓝牙应用程序,它将同时侦听传入连接(作为服务器)并使用Java和BlueCove寻找可用连接(作为客户端)。前提是两个蓝牙设备(如智能手机)可以在传输范围内自动发现彼此并开始某种文件交换或其他协作(这是机会网络实验)。 p>
我有一个基本的蓝牙客户端在自己的线程中运行,一个基本的蓝牙服务器在自己的线程中运行,我正在尝试让它们同时工作。这已经成功了一半,但是,无论出于何种原因,一个设备总是最终接收传入连接而从未找到其他设备,并且一个设备最终找到其他连接,但从未接收它们(两台机器运行相同的代码,具有相同的蓝牙加密狗 - Windows XP中的一台机器和Windows 7中的另一台机器)。到目前为止,我只用两台设备试过这个。
我收到例外情况,例如:
“java.io.IOException:无法查询远程设备”
“java.io.IOException:Name Lookup error; [10108]此类服务未知。在指定的名称空间中找不到该服务。”
“连接失败; [10051]尝试对无法访问的网络进行套接字操作。”
两个线程都必须调用 LocalDevice 和 StreamConnection ,所以我是否需要同步线程对这些资源的访问权限,或者线程是否可以同时访问这些资源?我可以锁定这些对象,还是我需要循环线程,以便客户端在服务器监听连接时休眠,反之亦然(我试图避免只是循环它们,因为蓝牙中的设备发现序列是这样的慢,并且客户端线程会让服务器在大部分时间内保持等待)?
我对多线程缺乏经验,我仍在学习蓝牙技术,所以如果有人有提示或信息,我会非常感激。
答案 0 :(得分:1)
无线电硬件的功能似乎各不相同。有些人,正如你所发现的,似乎只是真的支持一个连接...所以买另一个更有能力的,但我不知道怎么知道哪个...: - (