QDnsLookup Class

QDnsLookup クラスは、DNS ルックアップを表します。詳細...

ヘッダー #include <QDnsLookup>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network
継承: QObject

パブリック・タイプ

enum Error { NoError, ResolverError, OperationCancelledError, InvalidRequestError, InvalidReplyError, …, TimeoutError }
enum Protocol { Standard, DnsOverTls }
enum Type { A, AAAA, ANY, CNAME, MX, …, TXT }

プロパティ

公共機能

QDnsLookup(QObject *parent = nullptr)
QDnsLookup(QDnsLookup::Type type, const QString &name, QObject *parent = nullptr)
QDnsLookup(QDnsLookup::Type type, const QString &name, const QHostAddress &nameserver, QObject *parent = nullptr)
(since 6.6) QDnsLookup(QDnsLookup::Type type, const QString &name, const QHostAddress &nameserver, quint16 port, QObject *parent = nullptr)
(since 6.8) QDnsLookup(QDnsLookup::Type type, const QString &name, QDnsLookup::Protocol protocol, const QHostAddress &nameserver, quint16 port = 0, QObject *parent = nullptr)
virtual ~QDnsLookup()
QBindable<QString> bindableName()
QBindable<QHostAddress> bindableNameserver()
QBindable<quint16> bindableNameserverPort()
QBindable<QDnsLookup::Protocol> bindableNameserverProtocol()
QBindable<QDnsLookup::Type> bindableType()
QList<QDnsDomainNameRecord> canonicalNameRecords() const
QDnsLookup::Error error() const
QString errorString() const
QList<QDnsHostAddressRecord> hostAddressRecords() const
bool isAuthenticData() const
bool isFinished() const
QList<QDnsMailExchangeRecord> mailExchangeRecords() const
QString name() const
QList<QDnsDomainNameRecord> nameServerRecords() const
QHostAddress nameserver() const
quint16 nameserverPort() const
QDnsLookup::Protocol nameserverProtocol() const
QList<QDnsDomainNameRecord> pointerRecords() const
QList<QDnsServiceRecord> serviceRecords() const
void setName(const QString &name)
(since 6.6) void setNameserver(const QHostAddress &nameserver, quint16 port)
void setNameserver(const QHostAddress &nameserver)
void setNameserver(QDnsLookup::Protocol protocol, const QHostAddress &nameserver, quint16 port = 0)
void setNameserverPort(quint16 port)
void setNameserverProtocol(QDnsLookup::Protocol protocol)
(since 6.8) void setSslConfiguration(const QSslConfiguration &sslConfiguration)
void setType(QDnsLookup::Type)
QSslConfiguration sslConfiguration() const
QList<QDnsTextRecord> textRecords() const
(since 6.8) QList<QDnsTlsAssociationRecord> tlsAssociationRecords() const
QDnsLookup::Type type() const

パブリックスロット

void abort()
void lookup()

シグナル

void finished()
void nameChanged(const QString &name)
void nameserverChanged(const QHostAddress &nameserver)
void nameserverPortChanged(quint16 port)
void nameserverProtocolChanged(QDnsLookup::Protocol protocol)
void typeChanged(QDnsLookup::Type type)

静的パブリック・メンバー

(since 6.8) quint16 defaultPortForProtocol(QDnsLookup::Protocol protocol)
(since 6.8) bool isProtocolSupported(QDnsLookup::Protocol protocol)

詳細説明

QDnsLookupは、オペレーティング・システムが提供するメカニズムを使用してDNSルックアップを実行します。ルックアップを実行するには、nametype を指定し、lookup() スロットを呼び出す必要があります。完了するとfinished() シグナルが発行されます。

たとえば、XMPPチャットクライアントが指定したドメインのどのサーバに接続すべきかを決定することができます:

void MyObject::lookupServers()
{
    // Create a DNS lookup.
    dns = new QDnsLookup(this);
    connect(dns, &QDnsLookup::finished, this, &MyObject::handleServers);

    // Find the XMPP servers for gmail.com
    dns->setType(QDnsLookup::SRV);
    dns->setName("_xmpp-client._tcp.gmail.com");
    dns->lookup();
}

リクエストが終了したら、その結果を次のように処理します:

voidMyObject::handleServers() {// 検索が成功したかチェック します QDnsLookup::NoError) { // 検索が成功したかチェックする。        qWarning("DNS lookup failed");
        dns->deleteLater();return; }// 結果を処理する。 const autorecords=  dns->serviceRecords();for(constQDnsServiceRecord&record: records) { ...} dns->deleteLater(); }

注: 単にホスト名に関連付けられているIPアドレス、またはIPアドレスに関連付けられているホスト名を見つけたい場合は、代わりにQHostInfo

DNS-over-TLSと認証データ

QDnsLookupは一部のプラットフォームでDNS-over-TLS(RFC 7858で規定されているDoT)をサポートしています。現在のところ、QSslSocket のサポートが Qt にある場合、通常のクエリがサポートされているすべての Unix プラットフォームが含まれます。実行時にサポートがあるかどうかを確認するには、isProtocolSupported() を使用してください。

DNS-over-TLSを使用する場合、QDnsLookupはRFC 7858のセクション4.1に記述されている "Opportunistic Privacy Profile "認証方法のみを実装している。このモードでは、QDnsLookupは(QSslSocket を使用して)接続先のサーバーで有効な証明書を提示していることを確認するだけである。クライアントは、setSslConfiguration()を使用して追加の制限を課したり、sslConfiguration()を使用してクエリが完了した後に情報を取得したりすることができる。

QDnsLookupは、TLS経由でクエリーされたDNSサーバーに対して、返されたデータに対する認証の実行を要求する。そのデータが有効であることが確認されると、authenticData プロパティが true に設定される。QDnsLookupはそれ自身ではデータの完全性を検証しないため、アプリケーションは、他の手段で信頼できることを確認したサーバーに対してのみ、このプロパティを信頼する必要があります。

TLSを使用しない認証データ

QDnsLookupは、TLS暗号化が要求されない場合でも、setNameserver()で設定されたサーバーのAuthentic Dataを要求する。これは、アプリケーションと同じホストや信頼できるネットワーク上にあるキャッシュネームサーバーに問い合わせるときに便利です。TLSの場合と似ていますが、使用するサーバーが信頼できるかどうか、暗号化されていない接続が改ざんできないかどうかを判断するのはアプリケーションの責任です。

QDnsLookupはシステム設定に従い、デフォルトのネームサーバーにAuthentic Dataを要求する(つまり、setNameserver()が呼び出されない場合)。これは現在、glibc 2.31以降を使用するLinuxシステムでのみサポートされている。その他のシステムでは、QDnsLookupはクエリーヘッダーのADビットを無視します。

メンバ型ドキュメント

enum QDnsLookup::Error

DNSルックアップの処理中に見つかった可能性のあるすべてのエラー状態を示す。

定数説明
QDnsLookup::NoError0エラー状態なし。
QDnsLookup::ResolverError1システムの DNS リゾルバの初期化でエラーが発生しました。
QDnsLookup::OperationCancelledError2abort() メソッドを使用して検索が中止されました。
QDnsLookup::InvalidRequestError3要求された DNS 検索が無効でした。
QDnsLookup::InvalidReplyError4サーバーから返された応答が無効でした。
QDnsLookup::ServerFailureError5サーバーが要求の処理中に内部障害に遭遇した (SERVFAIL)。
QDnsLookup::ServerRefusedError6サーバーがセキュリティまたはポリシー上の理由でリクエストの処理を拒否した(REFUSED)。
QDnsLookup::NotFoundError7要求されたドメイン名が存在しない(NXDOMAIN)。
QDnsLookup::TimeoutError8サーバーに到達できなかったか、時間内に応答しなかった(6.6以降)。

enum QDnsLookup::Protocol

問い合わせが行われるDNSサーバーのタイプを示す。

定数説明
QDnsLookup::Standard0UDP を使用し、必要に応じて TCP にフォールバックする、通常の暗号化されていない DNS (デフォルト・ポート: 53)
QDnsLookup::DnsOverTls1TCP上でTLS(RFC 7858で規定されているDoT)上で暗号化されたDNS(デフォルトポート:853)

isProtocolSupported()、nameserverProtocolsetNameserver()も参照の こと。

enum QDnsLookup::Type

実行されたDNS検索のタイプを示す。

定数説明
QDnsLookup::A1IPv4アドレスレコード。
QDnsLookup::AAAA28IPv6アドレスレコード。
QDnsLookup::ANY255任意のレコード。
QDnsLookup::CNAME5正規名レコード。
QDnsLookup::MX15メール交換レコード。
QDnsLookup::NS2ネームサーバー・レコード。
QDnsLookup::PTR12ポインタレコード。
QDnsLookup::SRV33サービスレコード。
QDnsLookup::TLSA (since Qt 6.8)52TLS関連レコード。
QDnsLookup::TXT16テキストレコード。

プロパティ・ドキュメンテーション

[read-only, since 6.8] authenticData : const bool

このプロパティは、応答がリゾルバによって認証されたかどうかを保持する。

QDnsLookup は自分自身では認証を行わない。その代わりに、問い合わせを受けた ネームサーバーが認証を行い、それを報告することを信頼する。アプリケーションは、 ()で設定したサーバーが信頼できるかどうかを 判断する責任を負う。サーバーが設定されていない場合、 、 応答を信頼すべきかどうかに関するシステム設定に従う。setNameserver QDnsLookup

このプロパティは、error() がリゾルバ・エラーの発生を示している場合でも設定することができる。

このプロパティは Qt 6.8 で導入されました。

アクセス関数です:

bool isAuthenticData() const

Notifier シグナル:

void finished()

setNameserver() およびnameserverProtocol()も参照してください

[read-only] error : const Error

このプロパティは、DNS ルックアップが失敗した場合に発生したエラーのタイプを保持する。NoError

アクセス関数:

QDnsLookup::Error error() const

ノーティファイアシグナル:

void finished()

[read-only] errorString : const QString

このプロパティは、DNS ルックアップが失敗した場合のエラーの、人間が読める説明を保持する。

アクセス関数:

QString errorString() const

通知シグナル

void finished()

[bindable] name : QString

注意: このプロパティはQProperty バインディングに対応しています。

このプロパティは、検索する名前を保持する。

検索する名前が空の場合、QDnsLookup は DNS のルートドメインの解決を試みる。このクエリは通常、QDnsLookup::typeNS に設定して実行される。

注意: この名前はIDNAを使用してエンコードされるため、DNS-SD仕様と互換性のあるSRVレコードの問い合わせには適さない。

[bindable] nameserver : QHostAddress

注意: このプロパティはQProperty バインディングに対応している。

このプロパティは、DNS 検索に使用するネームサーバを保持します。

[bindable, since 6.6] nameserverPort : quint16

注意: このプロパティは、QProperty バインディングに対応している。

このプロパティは、DNS検索に使用するネームサーバーのポート番号を保持する。

値 0 は、QDnsLookupnameserverProtocol() のデフォルトポートを使用することを示す。

注意: ポート番号をデフォルト(53)以外の値に設定すると、nameserverProtocol()を使用する場合、オペレーティングシステムの制限やファイアウォールによっては、名前解決に失敗する可能性があるQDnsLookup::Standard 。特に、QDnsLookup によって使用される Windows API は、代替ポート番号を扱うことができません。

このプロパティは Qt 6.6 で導入されました。

[bindable, since 6.8] nameserverProtocol : Protocol

注: このプロパティはQProperty バインディングに対応している。

このプロパティは、DNS クエリを送信するときに使用するプロトコルを保持します。

このプロパティは Qt 6.8 で導入されました。

isProtocolSupported()も参照してください

[bindable] type : Type

注: このプロパティはQProperty バインディングに対応している。

このプロパティは、DNS 検索のタイプを保持する。

メンバー関数ドキュメント

[explicit] QDnsLookup::QDnsLookup(QObject *parent = nullptr)

QDnsLookup オブジェクトを構築し、親オブジェクトとしてparent を設定する。

type プロパティの既定値はQDnsLookup::A になります。

QDnsLookup::QDnsLookup(QDnsLookup::Type type, const QString &name, QObject *parent = nullptr)

与えられたtypename に対して QDnsLookup オブジェクトを構築し、parent を親オブジェクトとして設定する。

QDnsLookup::QDnsLookup(QDnsLookup::Type type, const QString &name, const QHostAddress &nameserver, QObject *parent = nullptr)

QDnsLookup オブジェクトを構築して、デフォルトの DNS ポートで動作している DNS サーバーnameserver を使用して、レコードタイプtypename に対するクエリーを発行し、親オブジェクトとしてparent を設定する。

[since 6.6] QDnsLookup::QDnsLookup(QDnsLookup::Type type, const QString &name, const QHostAddress &nameserver, quint16 port, QObject *parent = nullptr)

ポートport で動作している DNS サーバnameserver を使用して、レコード・タイプtypename に対するクエリを発行する QDnsLookup オブジェクトを構築し、親オブジェクトとしてparent を設定します。

注: ポート番号をデフォルト(53)以外の値に設定すると、使用するnameserverProtocol() がQDnsLookup::Standard の場合、オペレーティング・システムの制限やファイアウォールによっては、名前解決に失敗することがある。特に、QDnsLookupが使用するWindows APIは、代替ポート番号を扱うことができません。

この関数はQt 6.6で導入されました。

[since 6.8] QDnsLookup::QDnsLookup(QDnsLookup::Type type, const QString &name, QDnsLookup::Protocol protocol, const QHostAddress &nameserver, quint16 port = 0, QObject *parent = nullptr)

ポートport で動作する DNS サーバnameserver を使用して、レコード・タイプtypename に対するクエリを発行する QDnsLookup オブジェクトを構築し、親オブジェクトとしてparent を設定します。

クエリは、サポートされていればprotocol を使用して送信される。サポートされているかどうかを確認するには、isProtocolSupported() を使用してください。

注意: ポート番号を既定値(53)以外の値に設定すると、オペレーティング・システムの 制限やファイアウォールによっては、名前解決に失敗することがある(使用するnameserverProtocol() がQDnsLookup::Standard の場合)。特に、QDnsLookupが使用するWindows APIは、代替ポート番号を扱うことができません。

この関数はQt 6.8で導入されました。

[virtual noexcept] QDnsLookup::~QDnsLookup()

QDnsLookup オブジェクトを破棄する。

QDnsLookup オブジェクトを削除することは、たとえ終了していなくても安全です。

[slot] void QDnsLookup::abort()

DNS検索操作を中止する。

検索がすでに終了している場合は何もしない。

QList<QDnsDomainNameRecord> QDnsLookup::canonicalNameRecords() const

この検索に関連付けられた正規名のレコードのリストを返します。

[static noexcept, since 6.8] quint16 QDnsLookup::defaultPortForProtocol(QDnsLookup::Protocol protocol)

プロトコルprotocol の標準(デフォルト)ポート番号を返します。

この関数は Qt 6.8 で導入されました。

isProtocolSupported()も参照してください

[signal] void QDnsLookup::finished()

このシグナルは、リプライの処理が終了すると発行される。

注: プロパティauthenticData に対するノーティファイアシグナル。プロパティerror に対するノーティファイアシグナル。プロパティerrorString に対するノーティファイアシグナル。

QList<QDnsHostAddressRecord> QDnsLookup::hostAddressRecords() const

この検索に関連付けられたホスト・アドレス・レコードのリストを返します。

bool QDnsLookup::isFinished() const

応答が終了したか中止されたかを返す。

[static, since 6.8] bool QDnsLookup::isProtocolSupported(QDnsLookup::Protocol protocol)

QDnsLookupprotocol を使った DNS クエリがサポートされている場合に true を返します。

この関数は Qt 6.8 で導入されました。

nameserverProtocolも参照してください

[slot] void QDnsLookup::lookup()

DNSルックアップを実行する。

完了するとfinished() シグナルが発行される。

QList<QDnsMailExchangeRecord> QDnsLookup::mailExchangeRecords() const

この検索に関連付けられたメール交換レコードのリストを返す。

レコードはRFC 5321 に従ってソートされているので、サーバに接続するためにそれらを使う場合は、リストされた順に試してみるべきである。

[signal] void QDnsLookup::nameChanged(const QString &name)

name name は新しいルックアップ名です。

注: プロパティname に対するノーティファイア・シグナル。

QList<QDnsDomainNameRecord> QDnsLookup::nameServerRecords() const

この検索に関連付けられたネームサーバーレコードのリストを返します。

QList<QDnsDomainNameRecord> QDnsLookup::pointerRecords() const

この検索に関連付けられたポインタ・レコードのリストを返します。

QList<QDnsServiceRecord> QDnsLookup::serviceRecords() const

この検索に関連付けられたサービスレコードのリストを返す。

レコードはRFC 2782 に従ってソートされているので、サーバに接続するためにそれらを使う場合は、リストされた順番に試してみるべきである。

[since 6.6] void QDnsLookup::setNameserver(const QHostAddress &nameserver, quint16 port)

ネームサーバーをnameserver に、ポートをport に設定する。

nameserverProtocol QDnsLookup::Standard注意: ポート番号をデフォルト(53)以外の値に設定すると、オペレーティング・ システムの制限やファイアウォールによっては、名前解決に失敗することがある。特に、QDnsLookup によって使用される Windows API は、代替ポート番号を扱うことができない。

注: プロパティのセッター関数nameserver

この関数は Qt 6.6 で導入されました。

QDnsLookup::nameserver およびQDnsLookup::nameserverPortも参照してください

[since 6.8] void QDnsLookup::setSslConfiguration(const QSslConfiguration &sslConfiguration)

DNS-over-TLS 接続の発信に使用するsslConfiguration を設定します。

この関数は Qt 6.8 で導入されました。

sslConfiguration() およびQSslSocket::setSslConfiguration()も参照してください

QSslConfiguration QDnsLookup::sslConfiguration() const

現在の SSL 設定を返します。

setSslConfiguration()も参照してください

QList<QDnsTextRecord> QDnsLookup::textRecords() const

この検索に関連付けられたテキスト・レコードのリストを返します。

[since 6.8] QList<QDnsTlsAssociationRecord> QDnsLookup::tlsAssociationRecords() const

この検索に関連付けられたTLSアソシエーションレコードのリストを返す。

DNS-based Authentication of Named Entities (DANE)に関連する標準によると、このフィールドは 無視されるべきであり、DNSリプライの真正性が確認できない場合は、 指定されたサーバーの真正性の確認に使用してはならない。詳細はisAuthenticData() を参照してください。

この関数は Qt 6.8 で導入されました。

[signal] void QDnsLookup::typeChanged(QDnsLookup::Type type)

このシグナルは、ルックアップtype が変更されたときに発行されます。type は新しいルックアップ・タイプです。

注: プロパティtype に対するノーティファイア・シグナル。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.