我正在制作通过UDP接收传感器数据(如陀螺仪)的应用程序,我需要恢复丢失的数据。如何做到这一点?
例如,在太空火箭中如何处理它?你不能要求重传,因为当设备在太空中时,重传的时间太长了。
很抱歉我的语法问题。
//编辑
我忘了说我以固定的频率发送数据包,这样设备就能知道它丢失了什么
发布于 2015-02-15 05:14:11
对于具有非常高等待时间的连接或对于单向连接,通常对数据进行编码,使得不仅可以检测到传输错误,而且可以大部分地修复传输错误。在最简单的情况下,您只需一次又一次地发送相同的数据,希望在一段时间后成功地被对等设备接收到。但还有比这更智能的编码。为了获得一些想法,看看RAID-5和类似的技术是如何工作的,即使磁盘崩溃,数据仍然可以被重现。
发布于 2015-02-15 07:53:18
多年前,我为一个视频通信产品做过类似的事情:对于每个数据包,编号为P0、P1、P2等,您可以选择您需要容忍多长时间的突发丢失。让我们以3个数据包为例。
像往常一样,通过P5发送P0开始通信,但是P6附加了额外的数据: P0和P3的xor。P6具有P1和P4等的xor。如果你丢失了任意三个包,它们都可以重建。如果Pn、Pn+1和Pn+2丢失,您可以将Pn+3与Pn+6上的“额外”数据进行异或,以恢复数据包Pn。
如果您能够负担得起内存和带宽,以最大限度地提高可靠性,我建议让每个数据包携带多个xors。例如,Pn可能与Pn-3和Pn-6的xor以及Pn-12和Pn-24的另一个xor一起提供。
您还可以使用来自接收的反馈机制,该机制允许它告诉发送者更改其恢复特征,发送或多或少的恢复数据并调整间隔。
https://stackoverflow.com/questions/28519433
复制相似问题