我使用蓝牙的 RFCOMM 编写了 android 应用程序。我通过相同的 RFCOMM UUID 向 android 应用程序发送 1 MB 数据。
我注意到我的应用程序中丢失了 1 个 L2CAP 数据包数据。有关详细信息,请参阅以下信息。
我的 android 移动蓝牙支持最大 RFCOMM 有效负载为 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 接收数据时,我也没有遇到任何异常。
如果有人遇到并解决了我的问题,请帮助我。