在运行时更改网络接口

艾哈迈德·埃萨姆(Ahmed Essam)

我正在用qt5编写一个小型应用程序。此应用程序每分钟都会收到API服务器的回复。一切正常,但我遇到了一个错误。

在测试应用程序时,我发现如果无线断开连接并再次重新连接,则该应用程序将正常运行。另外,如果我使用宽带连接,并且连接断开并再次重新连接,那么一切正常。现在,如果我在应用程序启动时使用无线设备,则断开无线连接并连接宽带,该程序将看不到宽带连接,并不断给我网络错误。

我使用单个QNetworkAccessManager实例进行连接。有趣的是,如果我QNetworkAccessManager为每个请求创建一个新实例,则该应用程序将正常运行。但是我认为为每个请求声明一个新实例并建立连接会产生开销。我也尝试clearAccessCache()在没有运气的情况下使用该请求。

因此,基本上我正在寻找可以QNetworkAccessManager在每个请求中重置的东西这是我的请求的示例代码:

// At class construct
manager = new QNetworkAccessManager(this);
// ....
// At member function
url = new QUrl("http://www.gridstatusnow.com/status");
manager->get(QNetworkRequest(*url));
BartoszKP

您可以尝试QNetworkAccessManager仅在无法访问网络时重新创建

// At member function
if (manager->networkAccessible() == QNetworkAccessManager::NotAccessible)
{
    delete manager;
    manager = new QNetworkAccessManager(this);
}

该文档说明:

默认情况下,此属性的值反映设备的物理状态。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章