我使用Qt 4.8中的演示代码作为基础,在我的应用程序中添加了一个简单的浏览器页面: [QTDIR] \演示\浏览器
这在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();
}
这将输出错误“名称解析中的临时故障”。所以在设备上我试过了:
我只能想象Qt正在使用不同的方法来解析DNS地址,但我不知道它可能是什么。
答案 0 :(得分:1)
事实证明,“名称解析中的临时失败”是错误EAI_AGAIN,当getaddrinfo()不知道问题是什么时,它会返回。它失败了因为我以root身份运行nslookup但是应用程序在用户帐户下运行,并且只有root用户具有对/etc/resolv.conf的读取权限。一旦我做了一个chmod一切正常。
为了永久修复此问题,我们在/usr/libexec/udhcpc.sh中添加了一个chmod,以便在创建/etc/resolve.conf时正确设置权限。