BluetoothServerSocket:如何处理后续连接

时间:2013-06-21 13:31:29

标签: android bluetooth

我需要开发一个允许设备不时进行通信的应用程序(一个设备发送一条简单的消息,另一个设备发送响应)。

此通信不会经常发生(几分钟一次),因此在设备之间保持永久连接似乎不合理。此外,连接可能由于某种原因而丢失,因此我将需要某种恢复逻辑。

相反,我更喜欢应用程序在每次需要向对等方发送数据时建立新连接。但是,规范说,在BluetoothServerSocket.accept返回后,应该关闭服务器套接字。这意味着该应用将无法再接收后续传入连接。

目前我正在考虑不关闭服务器套接字并以同步方式处理传入连接,以便应用程序在处理和关闭前一个连接之前不会尝试接受新连接。如果另一个对等体试图在这样的处理过程中连接会发生什么?它会失败或只是阻塞,直到服务器准备接受它?

1 个答案:

答案 0 :(得分:0)

文档说“除非你想接受更多的连接,否则可以(并且应该)丢弃BluetoothServerSocket。”既然你想接受更多的连接,那么你应该保留它。

文档还说明了有关ServerSocket的accept方法的内容。 接受是一个阻止呼叫。当接受连接或发生异常时,它将返回。仅当远程设备发送的连接请求的UUID与向此侦听服务器套接字注册的UUID匹配时,才接受连接。成功后,accept()将返回连接的BluetoothSocket。