我正在经历蓝牙插座的奇怪行为(在我看来),我想知道是否有人可以向我澄清。
情况:
我有两个通过蓝牙套接字连接在一起的 Android 应用程序:
- 第一个简单
write(byte[] message)
的输出流。 - 第二个
read(byte[] buffer)
对输入流进行了简单的处理。
在阅读器方面,我使用1024字节的缓冲区。发送方发送的消息比接收方缓冲区大小稍大:1024 + 108字节(总是相同的消息)。
好的,现在的行为:
在阅读器应用程序上,我最常收到第一个1024字节的块,它填满了缓冲区(如预期的那样),然后是108个字节的第二个。
但实际上经常(可能是 40% 的时间)我收到第一块1008字节,然后收到第二块124字节。
我真的很想了解这一点,因为我害怕错过一个重要的蓝牙概念。起初我想将读取的字节数与缓冲区大小进行比较,以了解是否已收到整个消息,但这个实验表明这可能不是一个好主意。
有人可以向我解释这种行为吗?
提前致谢。