【问题标题】:Is calling qt udpsocket flush useful?调用 qt udpsocket flush 有用吗?
【发布时间】:2017-03-08 03:37:13
【问题描述】:

我正在使用 QUdpSocket 将参考数据写入机器人。 我希望传输尽可能实时。 这是我现在正在做的事情:

if (dataBuffer.count() > 0)
{
    int numWritten = udp_socket->writeDatagram(dataBuffer.left(64), t_host, t_port);
    if (numWritten > 0) { dataBuffer.remove(0, numWritten); }
}

一个定时器以 50Hz 的频率触发上述代码。 在这种情况下是否需要在 writeDatagram 调用之后调用flush

【问题讨论】:

    标签: c++ qt qudpsocket


    【解决方案1】:

    不,没有必要打电话给flush()writeDatagram 方法具有即时效果。确保您使用的计时器是Qt::PreciseTimer

    【讨论】:

      【解决方案2】:

      这取决于系统。但是可以使用刷新来确保它会尽快写入。在某些系统中使用 waitForBytesWritten() 就足够了。

      【讨论】:

      • 有人在没有评论的情况下投了反对票,因此讨论 waitForBytesWritten() 可能是合适的... waitForBytesWritten() 仅对连接的 UDP 套接字有用。文档说 writeDatagram 应该足够了,但是对象确实有一个 flush() 函数。
      猜你喜欢
      • 2016-10-04
      • 1970-01-01
      • 1970-01-01
      • 2014-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-15
      • 2018-08-10
      相关资源
      最近更新 更多