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 アドレスを解決するために別の方法を使用しているとしか思えませんが、それが何であるかはわかりません。