蓝牙在Java中同时充当客户机/服务器

蓝牙在Java中同时充当客户机/服务器,java,bluetooth,p2p,Java,Bluetooth,P2p,我正在尝试创建一个蓝牙应用程序,它将使用Java和BlueCove同时侦听传入连接(作为服务器)和查找可用连接(作为客户端)。前提是两个蓝牙设备(如智能手机)可以在传输范围内自动发现对方并开始某种文件交换或其他协作(这是一个机会主义网络实验) 我有一个基本的蓝牙客户端在它自己的线程中运行,一个基本的蓝牙服务器在它自己的线程中运行,我试图让它们同时工作。这已经成功了一半,但是,不管出于什么原因,一个设备总是接收到传入的连接而从未找到其他设备,而一个设备最终找到其他连接,但从未接收到它们(两台机器都

我正在尝试创建一个蓝牙应用程序,它将使用Java和BlueCove同时侦听传入连接(作为服务器)和查找可用连接(作为客户端)。前提是两个蓝牙设备(如智能手机)可以在传输范围内自动发现对方并开始某种文件交换或其他协作(这是一个机会主义网络实验)

我有一个基本的蓝牙客户端在它自己的线程中运行,一个基本的蓝牙服务器在它自己的线程中运行,我试图让它们同时工作。这已经成功了一半,但是,不管出于什么原因,一个设备总是接收到传入的连接而从未找到其他设备,而一个设备最终找到其他连接,但从未接收到它们(两台机器都运行相同的代码,使用相同的蓝牙加密狗-一台在Windows XP中,另一台在Windows 7中)。到目前为止,我只在两台设备上尝试过这一点

我收到例外情况,例如:

“java.io.IOException:无法查询远程设备”

“java.io.IOException:名称查找错误;[10108]未知此类服务。在指定的名称空间中找不到该服务。”

“连接失败;[10051]尝试对无法访问的网络执行套接字操作。”

这两个线程都必须调用LocalDeviceStreamConnection,因此我需要同步线程对这些资源的访问,还是线程可以同时访问这些资源?我可以锁定这些对象,还是需要循环线程,以便客户端在服务器侦听co时休眠连接,反之亦然(我试图避免循环它们,因为蓝牙中的设备发现序列非常慢,客户端线程会让服务器在大部分时间等待)


我对多线程技术缺乏经验,目前仍在学习蓝牙技术,因此,如果有人能提供一些提示或信息,我将不胜感激。

无线电硬件的功能似乎各不相同。正如您所发现的,有些硬件似乎只支持一个连接……因此,请购买另一个功能更强的连接,但我不知道如何知道是哪种连接。。。:-(