我正在开发Android蓝牙项目,以便从定制硬件发送和接收数据。我在SDK中使用蓝牙聊天示例作为基础。
我正在将数据从一台设备发送到另一台设备(LG Nexus 4)。一切都好,直到我达到1004字节的长度(这是音频数据)。此时,在大多数情况下,它将其分为2个990和14字节的消息。但奇怪的是它有时发送1004没有分裂(大约4次100)。
我发送这个1004字节的数据包,其中有4个字节是我的标题,其余的1000字节是我想根据命令在标题中使用的实际数据,现在如果数据包按照上述方式分割比我无法处理流程。
所以,请让我知道为什么数据包会以这种方式分裂,如何阻止这种分裂,或者如果我不能这样做,请告诉我任何替代方法。
感谢。
答案 0 :(得分:1)
通过蓝牙套接字发送的数据被抽象为流。这里传输层被分成数据包,其中数据包的最大大小几乎为1KB(1000字节)。因此,您可以设计一种机制,您可以在其中发送标题中的消息长度信息,然后在接收方,您将不得不进行后续read()
次呼叫;每个返回一个数据包的数据。