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

How to send 2MB of data through UDP?

我正在使用 TMS570LS3137(DP84640 物理层)。尝试使用 lwip 对 UPD(单播)进行编程以发送 2MB 的数据。 截至目前,我最多可以发送 63kb 的数据。如何一次发送 2MB 的数据。 UDP 仅支持最多 63kb 的传输,但在此 link 。 他们提到“如果你需要发送更大的消息,你需要将它分解成多个数据报。”,如何处理这个?

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

我需要

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