簡體   English   中英

在運行時更改網絡接口

[英]Changing network interface at runtime

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

該文檔說明:

默認情況下,此屬性的值反映設備的物理狀態。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM