首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缺少1个L2CAP数据包的RFCOMM接收数据

缺少1个L2CAP数据包的RFCOMM接收数据
EN

Stack Overflow用户
提问于 2013-01-22 14:43:01
回答 2查看 1.8K关注 0票数 1

我使用蓝牙的RFCOMM编写了android应用程序。我通过相同的RFCOMM UUID将1MB数据发送到android应用程序。

我注意到我的应用程序中遗漏了1个L2CAP数据包数据。有关更多详细信息,请参阅以下信息。

我的android移动蓝牙支持的最大RFCOMM有效载荷是990字节,所以远程设备发送的每个L2CAP数据包的有效载荷都是990字节。每当我从远程设备发送1K的数据时,它就被分成两个L2CAP数据包,每个数据包990字节和34字节。

在我的安卓应用程序中收到数据后,我检查了每1000个数据,在那里我注意到1个L2CAP包,即990字节在安卓系统中被跳过了。

我使用分析器检查了从远程设备发送的所有数据。它完美地发送了1MB的数据,没有任何失败。

但仅在我的android应用程序中,我无法接收。这不是我的应用程序的问题,因为我在这里使用了蓝牙聊天示例代码。

我对此进行了多次测试,每次运行测试时,丢失的990字节数据与1MB数据中的索引不同。

我用android 2.2,2.3.3和2.3.6版本的3个手机进行了测试,每个手机都有同样的问题

但是在从RFCOMM套接字的InputStream接收数据时,我也没有得到任何异常。

如果有人面对并解决了我的问题,请帮助我。

EN

回答 2

Stack Overflow用户

发布于 2013-01-22 21:22:56

您是否可以使用HCIDump工具检查两台设备之间传输/接收的ACL数据。如果数据与HCI ACL数据包/sent匹配并已接收,则接收端的L2CAP正在丢弃某个数据包。

请查看此链接并查看mtu是否可能导致此问题。

http://people.csail.mit.edu/albert/bluez-intro/x559.html

谢谢Manivannan

票数 0
EN

Stack Overflow用户

发布于 2013-01-24 02:17:37

您可能想要在发送完所有数据后刷新流,RFCOMM可能会缓冲一些数据以供其PDU填满。查看此内容- OutputStream::flush()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14452977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档