我正在使用 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));
最佳答案
仅当网络无法访问时,您才可以尝试重新创建QNetworkAccessManager
:
// At member function
if (manager->networkAccessible() == QNetworkAccessManager::NotAccessible)
{
delete manager;
manager = new QNetworkAccessManager(this);
}
By default the value of this property reflects the physical state of the device.
关于c++ - 在运行时更改网络接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27213136/