gpt4 book ai didi

c++ - 在运行时更改网络接口(interface)

转载 作者:搜寻专家 更新时间:2023-10-31 01:42:15 25 4
gpt4 key购买 nike

我正在用 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);
}

The documentation解释:

By default the value of this property reflects the physical state of the device.

关于c++ - 在运行时更改网络接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27213136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com