如何使用Android BluetoothServerSocket接受多个连接?

时间:2013-04-08 02:11:18

标签: android bluetooth

我正在制作一个Android应用程序,其中一个服务器必须与多个客户端共享数据,一个客户端从多个服务器访问数据。问题是客户端可以使用connect()连接到多个服务器,但Server不会一次接受()多个连接。我已经阅读了developers.android的蓝牙页面,并从那里获取了以下内容

  

与TCP / IP不同,RFCOMM一次只允许每个通道连接一个客户端,因此在大多数情况下,在接受连接的套接字后立即调用BluetoothServerSocket上的close()是有意义的。

有没有办法接受BluetoothServerSocket上的多个客户端或从服务器端建立多个RFCOMM,或者解决这个问题。

2 个答案:

答案 0 :(得分:4)

我认为我遇到了类似的问题,并尝试通过为每个连接使用单独的UUID为我想要接受的每个连接单独生成ServerSocket。我想这使得每个ServerSocket都在不同的RFCOMM频道上进行监听。

答案 1 :(得分:0)

恕我直言,没有必要创建具有不同UUID的多个BluetoothServerSocket。无论何时建立连接,让另一个线程处理socket.getOutputStream(),但在主线程中使用相同的BluetoothServerSocket继续接受/收听。

在Android参考页面上here

  

accept()阻塞,直到建立连接。成功连接后返回连接的BluetoothSocket。

     

此调用返回后,可以再次调用它以接受后续调用   传入连接。

我找到了一个很好的例子here