6

我正在开发一个 Android 蓝牙项目,以从定制硬件发送和接收数据。我使用 SDK 中的蓝牙聊天示例作为基础。

我正在将数据从一台设备发送到另一台设备(LG Nexus 4)。一切正常,直到我达到 1004 字节的长度(它是音频数据)。在大多数情况下,它会将其拆分为 2 条 990 字节和 14 字节的消息。但奇怪的是有时它发送 1004 而不拆分(大约 100 次中的 4 次)。

我正在发送这个 1004 字节的数据包,其中 4 个字节是我的标头,其余 1000 个字节是我想按照标头中的命令使用的实际数据,现在如果数据包按照上述方式拆分,我不能处理流量。

所以,请让我知道为什么数据包会以这种方式拆分,我该如何停止这种拆分,或者,如果我不能这样做,请告诉我任何其他方式来做到这一点。

谢谢。

4

1 回答 1

2

通过蓝牙套接字发送的数据被抽象为流。在这里,传输层被分成数据包,其中数据包的最大大小接近 1KB(1000 字节)。因此,您可以设计一种机制,在该机制中您可以在标头中发送消息长度信息,然后在接收方您将不得不进行后续read()调用;每个返回一个数据包的数据。

于 2016-10-10T08:19:24.687 回答