所以从 Qt 5 开始,QHttp 已被弃用,我们现在都应该使用 QNetworkAccessManager。美好的。但是我如何从我的多宿主机器发出请求(HTTP 或其他)而不觉得我在玩轮盘赌?
如果没有办法,那么解决方法是什么?对于我现在的具体情况,我只需要通过 HTTP 下载一个文件。但是真的没有办法用 QtNetwork 以通用的方式做到这一点吗?
所以从 Qt 5 开始,QHttp 已被弃用,我们现在都应该使用 QNetworkAccessManager。美好的。但是我如何从我的多宿主机器发出请求(HTTP 或其他)而不觉得我在玩轮盘赌?
如果没有办法,那么解决方法是什么?对于我现在的具体情况,我只需要通过 HTTP 下载一个文件。但是真的没有办法用 QtNetwork 以通用的方式做到这一点吗?
如果您足够幸运,所需的接口是一个单独的物理(硬件)接口,您可以执行例如(web_view
is a 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!
}
eth1:1
同样,如果 IP 绑定到一个物理接口的虚拟接口部分(例如,eth1:2
等),这将不起作用。我仍在为这种情况寻找解决方案。