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