因此截至Qt 5,QHttp is deprecated,我們都應該use QNetworkAccessManager now。精細。但是,如何從我的多宿主機器發出請求(HTTP或其他),而不會感覺我正在玩輪盤賭?如何在Qt綁定到特定的接口/ IP時發出網絡請求?
如果there is no way,那麼什麼是解決方法?對於我現在的具體情況,我只需要通過HTTP下載文件。但是真的沒有辦法用QtNetwork以通用的方式做到這一點嗎?
因此截至Qt 5,QHttp is deprecated,我們都應該use QNetworkAccessManager now。精細。但是,如何從我的多宿主機器發出請求(HTTP或其他),而不會感覺我正在玩輪盤賭?如何在Qt綁定到特定的接口/ IP時發出網絡請求?
如果there is no way,那麼什麼是解決方法?對於我現在的具體情況,我只需要通過HTTP下載文件。但是真的沒有辦法用QtNetwork以通用的方式做到這一點嗎?
如果您足夠幸運,所需的界面是單獨的物理(硬件)界面,您可以執行(web_view
是QWebView*
):
QNetworkConfigurationManager config_manager;
QList<QNetworkConfiguration> configs = config_manager.allConfigurations();
bool found_interface = false;
QString desired_interface_name("eth1");
foreach (const QNetworkConfiguration &config, configs) {
if (config.name() == desired_interface_name) {
found_interface = true;
QNetworkAccessManager *network_access_manager = new QNetworkAccessManager;
network_access_manager->setConfiguration(config);
web_view->page()->setNetworkAccessManager(network_access_manager);
break;
}
}
if (!found_interface) {
//we failed to find the interface!
}
同樣,這將無法正常工作,如果IP綁定到一個物理接口的虛擬接口部分(例如eth1:1
,eth1:2
等)。我仍然在爲這種情況尋找解決方案。
@njajnke你能成功地綁定QNetworkAccessManager嗎?我前幾次測試過一個類似的代碼,但它在多宿主系統(即eth0,eth1)上不適用於我,請求總是通過默認gw路由 – sergico
這是一年後還沒有解決? – lpapp