我使用 Qt 4.8 中的演示代码作为基础向我的应用程序添加了一个简单的浏览器页面:[QTDIR]\demos\browser
这在 Windows 中运行良好,但是当我重建应用程序并在我的嵌入式 Linux 设备上尝试它时它失败了。在试验时,我发现我可以通过解析 IP 地址并使用它来加载 www.google.com。我在我的应用程序中添加了以下代码:
QHostInfo hostInfo = QHostInfo::fromName(m_url);
if (hostInfo.error() != QHostInfo::NoError)
{
qDebug() << "Lookup failed:" << hostInfo.errorString();
}
foreach (QHostAddress hostAdd, hostInfo.addresses())
{
qDebug() << "Found address:" << hostAdd.toString();
}
这会输出错误“名称解析中的临时故障”。所以在我尝试过的设备上:
- 检查 /etc/resolv.conf - 看起来不错。
- 检查我的网关出现在“route -n”中 - 看起来不错。
- 试过“ping 8.8.8.8” - 工作正常。
- 试过“nslookup www.google.com” - 工作正常。
- 尝试“wget http://www.google.com ” - 正确加载 index.html。
我只能想象 Qt 正在使用不同的方法来解析 DNS 地址,但我不知道它可能是什么。