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

时间:2014-01-22 16:24:53

标签: c++ qt qtwebkit qwebview qtnetwork

让我们看看你是否能解释我的问题。 [ C ++ 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代理失败?也许其他透明的隧道软件可以试用吗?

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

1 个答案:

答案 0 :(得分:2)

QWebView使用QNetworkAccessManager处理请求/响应。只有你可以覆盖的有用的东西是虚拟的

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

对你的目的并不是真的有用..

我也不认为Bearer的事情也会奏效。

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

据我所知,QNetworkAccessManager

不支持指定绑定地址