最近在实际项目开发中遇到了一个问题,当软件打开,与后台通过网络接口通信后,无线wifi的连接ping值会周期性地变大,导致图像采集卡顿延迟。
为了解决这个问题,甚至换了第三方库来实现网络通信,最后发现高版本Qt不会出现这个问题,而低版本Qt(因为某种原因,我用的是5.6.3)就会出现问题。
后来查明白这其实是一个bug,又或者说是当使用WIFI的时候,Qt的Wifi模块默认每隔10s会检测WIFI模块的运行情况,在Windows下这样的检测会导致网络波动。
也就是说,调用QNetworkAccessManager类之后,就会出现这种现象。
解决方案是将Qt的默认10s改成-1s也就是不检测能显著消除网络波动。
在main函数中设置环境变量,可以解决问题:
qputenv("QT_BEARER_POLL_TIMEOUT", QByteArray::number(-1));
文章评论