7

让我们看看您是否可以对我的问题有所了解。[ C++Qt 5.2,使用Qt Creator ]

情况:我有一台 PC,有多个本地 IP 地址分配给同一个接口(IP 别名)。对于每个本地 IP,路由器在带宽、NAT、连接等方面具有不同的配置。我正在将此本地 IP 切换集成到一些 Qt 应用程序中,特别是集成到使用QWebView提供良好浏览体验的应用程序中。

我需要什么:为了能够更改 QWebView 用于获取其请求的本地 IP。

我设法做的唯一一件事——只是一个补丁——是使用STUNNEL通过不同的本地 IP 将 localhost 端口映射到远程主机,并使用 QNetworkProxy 使 QWebView 使用这些 localhost 端口作为代理。问题是,出于某种原因,这样的代理显然会产生一些问题:用户看不到几个 YouTuve 视频,只能看到静态背景和“发生错误”。使用NetworkProxyFactory::setUseSystemConfiguration(true)时不会发生这种情况,因为每个视频都可以完美观看。

问题是:如何使用 Qt 管理 IP 别名?如果那不可能,您知道为什么通过 STUNNEL 代理会失败吗?也许可以尝试其他透明隧道软件?

在输入表示赞赏。提前致谢!

4

1 回答 1

2

QWebView 使用 QNetworkAccessManager 来处理请求/响应。您可以覆盖的唯一有用的东西是虚拟的

QNetworkReply * QNetworkAccessManager::createRequest(Operation op, 
const QNetworkRequest & req, QIODevice * outgoingData = 0) [virtual protected]

不幸的是,这对您的目的并没有真正有用..

同样,我认为 Bearer 也不会起作用。

所以,根据你需要这个功能有多糟糕,我会考虑在 QNetworkAccessManager 中进行更改,以便能够传递允许的接口/IP 地址列表,所以 QTcpSocket 它将自己绑定到指定的 IP 地址......然后将此 AccessManager 设置为 WebView .

据我所知,QNetworkAccessManager 不支持指定绑定地址

于 2014-05-16T13:16:49.150 回答