我使用蓝牙的RFCOMM编写了android应用程序。我通过相同的RFCOMM UUID向Android应用程序发送1 MB数据。
我注意到我的应用中丢失了1个L2CAP数据包数据。有关详细信息,请参阅以下信息。
支持最大RFCOMM有效载荷的我的android移动蓝牙是990字节,因此远程设备正在发送每个有效载荷为990字节的L2CAP数据包。每当我从远程设备发送1K数据时,它就被分成2个L2CAP包,每个包990和34个字节。
在我的Android应用程序中接收数据后,我检查了每个1K数据,在那里我注意到1个L2CAP数据包,即在android中跳过了990个字节。
我检查了使用分析仪从远程设备发送的所有数据。它完美地发送1 MB数据而没有任何失败。
但仅在我的Android应用程序中,我无法接收。这不是我的应用程序的问题,因为我在这里使用了蓝牙聊天示例代码。
我测试了几次,每次运行测试时,丢失的990字节数据与1MB数据中的索引不同。
我测试了3个手机的android 2.2,2.3.3和2.3.6版本每个移动设备同样的问题
但是,从RFCOMM套接字的InputStream接收数据时,我没有任何异常。
如果有人面对并解决了我的问题,请帮助我。
答案 0 :(得分:0)
您可以使用HCIDump工具检查两台设备之间传输/接收的ACL数据。如果数据与HCI ACL数据包匹配/发送和接收,则接收端的L2CAP正在丢弃一些数据包。
看一下这个链接,看看mtu是否可能导致这个问题。
http://people.csail.mit.edu/albert/bluez-intro/x559.html
由于 马尼万南