【问题标题】:How can I clear UDP buffer without recvfrom?如何在没有 recvfrom 的情况下清除 UDP 缓冲区?
【发布时间】:2020-06-05 02:26:05
【问题描述】:

我有一个嵌入式 linux 项目。它通过 UDP 将数据从 UDP 缓冲区获取到静态字符数组。这个静态数组的大小是 20000 字节。我想忽略超过此大小的 UDB 消息。但是当数据更大时,它总是停留在 UDP 缓冲区中,因为它不是用 recvfrom 读取的。有什么办法可以清除 UDP 缓冲区中的这些大数据?

【问题讨论】:

    标签: c linux udp


    【解决方案1】:

    不读取就不能丢弃套接字缓冲区中的数据。但是即使有一个较小的缓冲区也可以读取这些大数据报——它会简单地丢弃任何不适合给定缓冲区的东西。要确定数据报是否太大,请使用MSG_TRUNC 标志,以便它提供数据包的原始长度。如果这表明数据包过大,则丢弃它并继续处理下一个数据包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-25
      • 2022-01-05
      • 1970-01-01
      • 2011-10-17
      • 2018-12-06
      相关资源
      最近更新 更多