QDnsLookup Class
QDnsLookup クラスは、DNS ルックアップを表します。詳細...
ヘッダー | #include <QDnsLookup> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake: | QT += network |
継承: | QObject |
- 継承メンバを含む全メンバのリスト
- QDnsLookup はNetwork Programming API に含まれます。
パブリック・タイプ
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 | 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ルックアップを実行します。ルックアップを実行するには、name とtype を指定し、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::NoError | 0 | エラー状態なし。 |
QDnsLookup::ResolverError | 1 | システムの DNS リゾルバの初期化でエラーが発生しました。 |
QDnsLookup::OperationCancelledError | 2 | abort() メソッドを使用して検索が中止されました。 |
QDnsLookup::InvalidRequestError | 3 | 要求された DNS 検索が無効でした。 |
QDnsLookup::InvalidReplyError | 4 | サーバーから返された応答が無効でした。 |
QDnsLookup::ServerFailureError | 5 | サーバーが要求の処理中に内部障害に遭遇した (SERVFAIL)。 |
QDnsLookup::ServerRefusedError | 6 | サーバーがセキュリティまたはポリシー上の理由でリクエストの処理を拒否した(REFUSED)。 |
QDnsLookup::NotFoundError | 7 | 要求されたドメイン名が存在しない(NXDOMAIN)。 |
QDnsLookup::TimeoutError | 8 | サーバーに到達できなかったか、時間内に応答しなかった(6.6以降)。 |
enum QDnsLookup::Protocol
問い合わせが行われるDNSサーバーのタイプを示す。
定数 | 値 | 説明 |
---|---|---|
QDnsLookup::Standard | 0 | UDP を使用し、必要に応じて TCP にフォールバックする、通常の暗号化されていない DNS (デフォルト・ポート: 53) |
QDnsLookup::DnsOverTls | 1 | TCP上でTLS(RFC 7858で規定されているDoT)上で暗号化されたDNS(デフォルトポート:853) |
isProtocolSupported()、nameserverProtocol 、setNameserver()も参照の こと。
enum QDnsLookup::Type
実行されたDNS検索のタイプを示す。
定数 | 値 | 説明 |
---|---|---|
QDnsLookup::A | 1 | IPv4アドレスレコード。 |
QDnsLookup::AAAA | 28 | IPv6アドレスレコード。 |
QDnsLookup::ANY | 255 | 任意のレコード。 |
QDnsLookup::CNAME | 5 | 正規名レコード。 |
QDnsLookup::MX | 15 | メール交換レコード。 |
QDnsLookup::NS | 2 | ネームサーバー・レコード。 |
QDnsLookup::PTR | 12 | ポインタレコード。 |
QDnsLookup::SRV | 33 | サービスレコード。 |
QDnsLookup::TLSA (since Qt 6.8) | 52 | TLS関連レコード。 |
QDnsLookup::TXT | 16 | テキストレコード。 |
プロパティ・ドキュメンテーション
[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::type をNS に設定して実行される。
注意: この名前はIDNAを使用してエンコードされるため、DNS-SD仕様と互換性のあるSRVレコードの問い合わせには適さない。
[bindable]
nameserver : QHostAddress
注意: このプロパティはQProperty バインディングに対応している。
このプロパティは、DNS 検索に使用するネームサーバを保持します。
[bindable, since 6.6]
nameserverPort : quint16
注意: このプロパティは、QProperty バインディングに対応している。
このプロパティは、DNS検索に使用するネームサーバーのポート番号を保持する。
値 0 は、QDnsLookup がnameserverProtocol() のデフォルトポートを使用することを示す。
注意: ポート番号をデフォルト(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)
与えられたtype とname に対して QDnsLookup オブジェクトを構築し、parent を親オブジェクトとして設定する。
QDnsLookup::QDnsLookup(QDnsLookup::Type type, const QString &name, const QHostAddress &nameserver, QObject *parent = nullptr)
QDnsLookup オブジェクトを構築して、デフォルトの DNS ポートで動作している DNS サーバーnameserver を使用して、レコードタイプtype のname に対するクエリーを発行し、親オブジェクトとしてparent を設定する。
[since 6.6]
QDnsLookup::QDnsLookup(QDnsLookup::Type type, const QString &name, const QHostAddress &nameserver, quint16 port, QObject *parent = nullptr)
ポートport で動作している DNS サーバnameserver を使用して、レコード・タイプtype のname に対するクエリを発行する 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 を使用して、レコード・タイプtype のname に対するクエリを発行する 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)
QDnsLookup でprotocol を使った 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.