在ContikiOS中手动拆分/分段数据包

时间:2019-05-31 20:10:11

标签: c++ c wireless contiki

我有一个使用Contiki-NG运行的TSCH应用程序。尽管ContikiOS在6LowPAN层上确实提供了UDP数据包分段,但是它会引起一些奇怪的行为,因此,在我的应用程序中,我们已将其禁用。没有它,传感器节点将提高数据包接收的可靠性。但是,这引入了一个新问题,即,如果UDP数据包的长度比所需的时间长,则6LowPAN只会丢弃该数据包。

为克服此问题,如果数据包的长度大于特定大小,我想将其拆分为较小的块,然后将它们逐个发送。有人可以通过提供一些有关如何实现此目标的代码片段向我展示正确的方向吗?

我在发送应用程序层数据时正在调用以下内容。

int simple_udp_sendto(struct simple_udp_connection *c,
                      const void *data, uint16_t datalen,
                      const uip_ipaddr_t *to);

并用作:

simple_udp_sendto(&udp_conn, &data_packet, sizeof(PacketHeader) + data_packet.packet_header.length, dst);

这是应该拆分数据_packet的地方,如果大于80个字节,则将它们一个接一个地发送。

现在,拆分后的所有数据包将被正确发送,而不会被6LowPAN丢弃。

任何指针和/或代码段都很棒!

0 个答案:

没有答案