【发布时间】:2012-05-11 02:54:57
【问题描述】:
这就是问题所在。传感器板每秒以各种 UDP 数据包大小发送 31 字节数据 3 次。例如:
1st packet 6 bytes
2nd packet 8 bytes
3rd packet 1 byte
4th packet 5 bytes
5th packet 5 bytes
6th packet 6 bytes
1st packet 4 bytes
2nd packet 5 bytes
3rd packet 1 byte
4th packet 7 bytes
5th packet 3 bytes
6th packet 6 bytes
7th packet 5 bytes
有多个传感器板从不同位置发送数据。
我遇到的问题是如何在接收到多个传感器板数据时对其进行序列检测。我可以顺序检测一块板,因为它是连续的。但不知道如何排序检测每个传感器板的数据,然后存储每个传感器板每100组数据的平均值。如果没有一个结构来为每个唯一的发送者收集数据,直到收到 31 个字节的缓冲区以形成一个完整的数据包,然后将其存储在另一个结构中,直到每个发送者收到 100 个集合,我不知道该怎么做。
正如我所说,使用一个设备,我可以对接收一整套 31 个字节进行序列检测。数据存储在 mysql 数据库中。
程序是 C 语言。
任何想法都将不胜感激。
谢谢,
杰森
【问题讨论】:
-
您能详细解释一下这些传感器板使用的协议吗?例如,它是如何处理丢包的?它是否记录在某处?
-
如果板子都与同一个端口通信并且没有在数据包中放入任何识别信息,那么你就不走运了。但大多数 UDP 实现确实包含发送方 IP - 即使它不是严格要求的,所以你可以检测到
-
如何从这些不同大小的数据构建合并的数据包?例如,只有一个有 7 字节的消息,因此消息大小似乎不能决定数据的类型。
-
不处理丢包问题,必须实施以克服 UDP 缺乏无连接和错误检查功能。