2

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

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

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

4

2 回答 2

5

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

于 2013-04-12T23:07:18.307 回答
0

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

在此处的 android 参考页面上:

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

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

我在这里找到了一个很好的例子。

于 2015-09-21T18:17:32.633 回答