【发布时间】:2016-11-19 02:11:12
【问题描述】:
我有一个基于 Linux 的无线网络应用程序,它需要非常严格的延迟。即,与没有数据相比,数据包的延迟到达一点也不好。另外,socket 中的旧数据只能延迟较新的数据。
我正在寻找从传输端是否有任何方法可以检测到套接字堆积了旧数据,在这种情况下刷新/丢弃它并发送新数据。
我知道接收器可以读取所有旧数据并丢弃。但是,这仍然会起到追赶的作用,并不能真正帮助加快速度以及是否有发送方选项可供评估。
感谢您的帮助。
【问题讨论】:
-
内核已经以最快的速度将数据从发送缓冲区中传输出去,必要时网络已经将其丢弃。
-
@EJP,谢谢!虽然是的,但尝试尽快发送缓冲区,在断开连接并重新连接的情况下,内核将首先发送旧数据,并可能在应用程序空间中丢弃/累积数据包,然后从新数据开始。我希望有一种方法可以通过完全清除旧数据来跳转到新数据。
-
目前我们使用 debugfs 来读取 tx 队列,并且基于设置的上限阈值,我们不会向队列中添加更多数据,并等到 tx 队列达到低水位后再放入新的data 以防止将旧数据继续加载到流中。我们需要找到一种方法,如果 tx 队列达到上限阈值并立即到达队列底部,则丢弃它。