我使用蓝牙的RFCOMM编写了Android应用程序。我通过相同的RFCOMM UUID向Android应用发送1 MB数据。RFCOMM接收数据时丢失了1个L2CAP数据包
我注意到1个L2CAP数据包数据在我的应用程序中遗漏了。有关更多详情,请参阅以下信息
我的Android手机蓝牙支持最大RFCOMM有效载荷是990个字节,因此,远程装置发送每个分组L2CAP用的990个字节的有效负载。每当我从远程设备发送1K数据时,它都被分成2个990和34字节的L2CAP数据包。
在我的Android应用接收到数据之后,我检查每个1K数据,有我注意到1 L2CAP数据包即,990个字节已在机器人跳过。
我使用分析仪检查了从远程设备发送的所有数据。它完全发送1 MB数据而不会失败。
但是在我的android应用程序中,我无法接收。这与我的应用程序没有问题,因为我在此处使用了蓝牙聊天示例代码。
我测试这个几次,990个字节的丢失的数据的每个I运行测试时间不在1MB的数据相同的索引。
我测试了采用Android 2.2,2.3.3和2.3.6版本的3个手机的每个移动facinf同样的问题
但同时接收来自RFCOMM套接字的InputStream的数据还我没有得到任何异常。
如果有人面临和解决我的问题,请帮助我。
为了澄清,你是说,接收到的数据流中,你收到了连续字节?换句话说,您发送了“ A <990 bytes> B ”并且收到了“ AB ”? –
@DavidSchwartz我正在那样做。这在1MB数据中是1次 –
我可以想到很多可能的原因,并且几乎所有这些都是代码中的错误。试试这个实验 - 记录每个调用中接收到的低字节接收函数的字节数。看看它们是否总和你发送的字节数。如果是这样,并且990字节仍然丢失,那证明你的代码丢失了它们。 –