【问题标题】:How to send 2MB of data through UDP?如何通过 UDP 发送 2MB 的数据?
【发布时间】:2021-03-09 19:31:52
【问题描述】:

我正在使用 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 ethernet datagram lwip tms570


    【解决方案1】:

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

    我需要

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

    【讨论】:

      猜你喜欢
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-06
      • 2012-12-12
      • 1970-01-01
      相关资源
      最近更新 更多