使用QWebView进行IP别名(Qt/C++)

lgv*_*dal 7 c++ qt qtwebkit qwebview qtnetwork

让我们看看你是否可以解释我的问题.[ C++ with Qt 5.2,使用Qt Creator ]

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

我需要的是:能够更改哪个本地IP QWebView用于获取其请求.

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

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

在投入中表示赞赏.提前致谢!

evi*_*uff 2

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

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

不幸的是,这对于您的目的来说并不是真正有用。

我也不认为 Bearer 的事情会起作用。

因此,根据您需要此功能的程度,我会考虑在 QNetworkAccessManager 中进行更改,以便能够传递允许的接口/IP 地址列表,因此 QTcpSocket 它将自身绑定到指定的 IP 地址..然后将此 AccessManager 设置为 WebView 。

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