我正在尝试创建一个蓝牙应用程序,它将同时侦听传入的连接(作为服务器),并使用Java和BlueCove寻找可用的连接(作为客户端)。前提是两个蓝牙设备(如智能手机)能够自动发现对方,并在传输范围内立即开始某种文件交换或其他协作(这是用于机会主义网络的实验)。
我有一个基本的蓝牙客户端运行在它自己的线程中,一个基本的蓝牙服务器运行在它自己的线程中,我试图让它们同时工作。这是半途而废,但由于任何原因,一台设备最终总是接收到传入的连接而永远找不到其他设备,而一台设备最终会找到其他的连接,但从未接收到它们(这两台机器都运行着相同的代码,具有相同的蓝牙接口-- Windows XP中的一台机器和Windows 7中的另一台)。到目前为止,我只尝试过两种设备。
我收到了一些例外,比如:
"java.io.IOException:无法查询远程设备“
"java.io.IOException:名称查找错误;10108不知道此类服务。在指定的名称空间中找不到该服务。“
“连接失败;10051套接字操作尝试到无法到达的网络。”
两个线程都必须调用、LocalDevice、和LocalDevice,所以我需要同步线程对这些资源的访问,还是线程可以并发访问这些资源?我是否可以锁定这些对象,或者是否需要循环线程,以便客户机在服务器侦听连接时睡觉,反之亦然(我试图避免只循环这些对象,因为蓝牙中的设备发现序列太慢了,客户机线程将使服务器进程等待很长时间)?
我对多线程没有经验,而且还在学习蓝牙技术,所以如果有人有提示或信息,我会非常感激的。
发布于 2010-10-30 11:22:20
无线电硬件的能力似乎各不相同。正如你所发现的,有些人似乎只支持一种联系.所以再买一个更有能力的,但我不知道谁知道.:-(
https://stackoverflow.com/questions/4038414
复制相似问题