2013-08-21 60 views
1

我正在使用QNetworkAccessManager來執行HTTP請求。我們發現我們正在使用的網絡連接可能會偶爾脫機,並且我想主動檢測鏈接何時停止。如何從QNetworkAccessManager :: networkAccessibleChanged()獲取信號?

我已經連接了一個插槽到QNetworkAccessManager :: networkAccessibleChanged()信號,但沒有看到我插槽的任何輸出。

在尋找解決的辦法,我走到了答案最接近的是下面的討論:http://www.qtcentre.org/threads/37514-use-of-QNetworkAccessManager-networkAccessible

然而,建議的解決方案無法解決我的問題。

關於我可能做錯什麼的建議?

回答

3

好了,經過一些嘗試,我找到了答案......

原來我的問題是,我有我的系統上的多個以太網端口。

在從我的問題聯的討論中,添加以下代碼有人建議:

QNetworkAccessManager* mNetworkAccessManager = new QNetworkAccessManager(); 
QNetworkConfigurationManager manager; 
mNetworkAccessManager->setConfiguration(manager.defaultConfiguration()); 

爲QNetworkAccessManager :: setConfiguration()文檔表示的默認配置,則自動使用;所以這是不必要的,但它使我走上正軌。

我的問題是,默認配置連接到一個不同的接口比我的連接正在經歷;所以我做了以下事情:

QString ifName = "eth2"; 
QNetworkAccessManager* pNetworkAccessManager = new QNetworkAccessManager(); 
QNetworkConfigurationManager manager; 
foreach(QNetworkConfiguration cfg, manager.allConfigurations()) { 
    if (cfg.name() == ifName) { 
    pNetworkAccessManager->setConfiguration(cfg); 
    break; 
    } 
} 

現在,我的槽被調用。

我希望有一種更簡單的方法來獲得所需的配置。現在,我必須弄清楚如何從IP地址開始配置,而不是接口名稱。