微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – 蓝牙或wifi流(spp)是否会错过字节或损坏字节?

有些事让我困扰多年.
我使用了很多蓝牙和最近的wifi流(spp).这些流始终连接到特定设备,并通过简单的字节命令进行通信.

一些设备(他们的微控制器)我自己编程,我必须始终检查线上的信号是否是我所期望的,发送和检查crcs.

不知怎的,我想在我的智能手机上做同样的事情,因为我用“readByte”访问我的流并逐字节读取,我总是想知道它是否真的可能
a)消息中的一个字节可能丢失
b)消息混合或“不按顺序”

我不知道底层硬件有多少功能.它是否使用crc检查每条消息,并在消息损坏时再次请求消息?或者它是否盲目地将每个字节传递给我的“readByte”方法

如果设备发送消息a然后是b,接收器是否可能在a之前接收到b并在传递我的代码b之前或甚至混合像拉链这样的字节并给我一个[0]然后b [0]然后a [1]等等.

我应该对这些溪流有多少信任?一些澄清将不胜感激

解决方法

我想你可以睡个好觉.基于分组交换网络的WiFi和蓝牙,每个数据包都带有crc,物理层内置拥塞和链路质量控制 – 因此,除了极为罕见的固件错误外,它实际上比有线串行连接更可靠.

换句话说 – 纠错发生在比你正在使用的更低的水平.

回答有关数据包到达顺序的问题:点对点协议不受此问题的影响.当它们通过不同的路由行进时发生分组重新排序,因此当没有其他路由时没有问题.

如果您在这些协议上使用面向字节的流,则会以相同的顺序获得相同的字节,因为它们的设计考虑了这一目标.另一方面,数据包访问不是,但Android并没有为您提供使用它的方法.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐