如何通过UDP发送2MB的数据?

问题描述

我使用的是 TMS570LS3137 (DP84640 Phy)。尝试使用 lwip 编程 UPD(单播)以发送 2MB 数据。 截至目前,我最多可以发送 63kb 的数据。如何一次发送 2MB 的数据。 UDP 仅支持高达 63kb 的传输,但在此链接https://stackoverflow.com/questions/32512345/how-to-send-udp-packets-of-size-greater-than-64-kb#:~:text=So%20it's%20not%20possible%20to,it%20up%20into%20multiple%20datagrams。 他们提到“如果你需要发送更大的消息,你需要把它分解成多个数据报。”,如何进行?

解决方法

由于 UDP 使用 IP,您通常被限制在 64 KiB 的最大 IP 数据包大小,即使有碎片也是如此。因此,任何 UDP 负载的硬限制是 65,535 - 28 = 65,507 字节。

我需要

  • 将您的数据分成多个数据报。由于数据报可能不按发送顺序到达甚至丢失,这需要某种协议或报头。这可以简单到在开头定义四个字节来定义数据到达的缓冲区偏移量,或者一个数据报序列号。当您使用它时,您不会希望依赖分段,但根据情况,使用普通以太网上的最大 UDP 有效负载大小(1500 字节 MTU - 20 字节 IP 标头 - 8 字节 UDP 标头 = 1472 字节) ),或应该一直有效的合理最大值(例如 1432 字节)。
  • 使用可以传输任意大小的数据并为您完成所有工作的 TCP。