首页 > 解决方案 > 如何通过 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 =所以%20it's%20not%20possible%20to,it%20up%20into%20multiple%20datagrams。他们提到“如果您需要发送更大的消息,则需要将其分解为多个数据报。”,如何进行呢?

标签: udpethernetdatagramlwiptms570

解决方案


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

我需要要么

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

推荐阅读