QHostInfo Class
QHostInfo クラスは、ホスト名の検索を行うための静的関数を提供します。詳細...
| ヘッダー: | #include <QHostInfo> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake: | QT += network |
- 継承されたメンバーを含む、すべてのメンバーの一覧
- QHostInfoは、ネットワークプログラミングAPIの一部です。
注:このクラスのすべての関数は再入可能です。
注: 以下の関数はスレッドセーフでもあります:
- lookupHost(const QString &name, const QObject *receiver, const char *member)
- abortHostLookup(int id)
- fromName(const QString &name)
- localHostName()
- localDomainName()
- clearCache()
- lookupHost(const QString &name, const QObject *context, Functor functor)
- lookupHost(const QString &name, Functor &&functor)
パブリック型
| enum | HostInfoError { NoError, HostNotFound, UnknownError } |
パブリック関数
| QHostInfo(int id = -1) | |
| QHostInfo(const QHostInfo &other) | |
| QHostInfo(QHostInfo &&other) | |
| ~QHostInfo() | |
| QList<QHostAddress> | addresses() const |
| QHostInfo::HostInfoError | error() const |
| QString | errorString() const |
| QString | hostName() const |
| int | lookupId() const |
| void | setAddresses(const QList<QHostAddress> &addresses) |
| void | setError(QHostInfo::HostInfoError error) |
| void | setErrorString(const QString &str) |
| void | setHostName(const QString &hostName) |
| void | setLookupId(int id) |
| void | swap(QHostInfo &other) |
| QHostInfo & | operator=(QHostInfo &&other) |
| QHostInfo & | operator=(const QHostInfo &other) |
静的パブリックメンバー
| void | abortHostLookup(int id) |
(since 6.12) void | clearCache() |
| QHostInfo | fromName(const QString &name) |
| QString | localDomainName() |
| QString | localHostName() |
| int | lookupHost(const QString &name, const QObject *receiver, const char *member) |
| int | lookupHost(const QString &name, Functor &&functor) |
| int | lookupHost(const QString &name, const QObject *context, Functor functor) |
詳細な説明
QHostInfo は、ホスト名に関連付けられた IP アドレス、または IP アドレスに関連付けられたホスト名を検索します。このクラスは 2 つの静的な便利関数を提供しています。1 つは非同期で動作し、ホストが見つかったらシグナルを発行するもので、もう 1 つはブロックして QHostInfo オブジェクトを返すものです。
ホストの IP アドレスを非同期で検索するには、lookupHost() を呼び出します。この関数は、ホスト名または IP アドレス、レシーバーオブジェクト、およびスロットシグネチャを引数として取り、ID を返します。検索 ID を指定してabortHostLookup() を呼び出すことで、検索を中止することができます。
例:
// To find the IP address of qt-project.org
QHostInfo::lookupHost("qt-project.org", this, &MyWidget::printResults);
// To find the host name for 4.2.2.1
QHostInfo::lookupHost("4.2.2.1", this, &MyWidget::printResults);結果が準備できたら、スロットが呼び出されます。結果は QHostInfo オブジェクトに格納されます。ホストの IP アドレスの一覧を取得するにはaddresses() を呼び出し、検索されたホスト名を取得するにはhostName() を呼び出します。
ルックアップが失敗した場合、error() は発生したエラーの種類を返します。errorString() は、ルックアップエラーについて人間が理解しやすい説明を返します。
ブロッキング検索を行う場合は、QHostInfo::fromName() 関数を使用してください:
QHostInfo は、IDNA および Punycode 規格を通じて国際化ドメイン名 (IDN) をサポートしています。
ローカルホストの名前を取得するには、静的関数 `QHostInfo::localHostName()` を使用します。
QHostInfo は、オペレーティングシステムが提供するメカニズムを使用してルックアップを実行します。RFC 6724によると、ドメインまたはホストに対して登録されているすべての IP アドレスが返されるという保証はありません。
注: Qt 4.6.1以降、 QHostInfo は DNS 検索に専用の DNS スレッド 1 つではなく、複数のスレッドを使用するようになりました。これによりパフォーマンスは向上しますが、以前のバージョンの Qt と比較して、lookupHost() を使用する際のシグナル発火順序が変更されます。
注: Qt 4.6.3以降、 QHostInfo はパフォーマンス向上のために、60 秒間の小さな内部 DNS キャッシュを使用しています。
QAbstractSocket 、RFC 3492、およびRFC 6724も参照してください 。
メンバ型のドキュメント
enum QHostInfo::HostInfoError
この列挙型は、ホスト名の解決を試みた際に発生しうるさまざまなエラーを表しています。
| 定数 | 値 | 説明 |
|---|---|---|
QHostInfo::NoError | 0 | ルックアップに成功しました。 |
QHostInfo::HostNotFound | 1 | そのホストに対応する IP アドレスが見つかりませんでした。 |
QHostInfo::UnknownError | 2 | 不明なエラーが発生しました。 |
メンバ関数のドキュメント
[explicit] QHostInfo::QHostInfo(int id = -1)
ルックアップ ID「id 」を持つ空のホスト情報オブジェクトを作成します。
lookupId()も参照してください 。
QHostInfo::QHostInfo(const QHostInfo &other)
other のコピーを作成します。
[noexcept] QHostInfo::QHostInfo(QHostInfo &&other)
other から新しい QHostInfo をムーブコンストラクタで生成します。
注:移動元のオブジェクト `other `は 、部分的に形成された状態になります。この状態では、有効な操作は破棄と新しい値への代入のみです。
[noexcept] QHostInfo::~QHostInfo()
ホスト情報オブジェクトを破棄します。
[static] void QHostInfo::abortHostLookup(int id)
lookupHost() によって返された ID「id 」によるホスト検索を中止します。
注: この関数はスレッドセーフです。
lookupHost() およびlookupId()も参照してください 。
QList<QHostAddress> QHostInfo::addresses() const
hostName() に関連付けられた IP アドレスのリストを返します。このリストは空の場合もあります。
例:
QHostInfo info;
...
if (!info.addresses().isEmpty()) {
QHostAddress address = info.addresses().first();
// use the first IP address
}関連項目: setAddresses()、hostName()、およびerror()を参照してください 。
[static, since 6.12] void QHostInfo::clearCache()
lookupHost() およびfromName() で使用される内部 DNS キャッシュをクリアします。
キャッシュされたホスト情報が古くなっている可能性があり、最新のルックアップが必要な場合にこれを呼び出します。代表的な使用例は以下の通りです:
- アプリケーションがネットワーク設定の変更を検出した場合(例:Wi-Fiとイーサネットの切り替え、またはVPNの接続/切断)。
- サーバーのアドレスが変更されたことが判明した場合(例:ダイナミックDNSやフェイルオーバー)、アプリケーションはホスト名を再度解決する必要があります。なお、上流のDNSサーバーやリゾルバーには独自のTTLがあるため、ここでキャッシュをクリアしてもそれらには影響しません。そのため、上流のTTLが切れるまでは、新しいルックアップでも以前のアドレスが返される可能性があります。
- アプリケーションは検索にキャッシュされた結果を使用しますが、キャッシュの有効期限が切れた場合や無効になった場合は、新たな検索が必要となります。
この関数はキャッシュをクリアするのみです。進行中の検索をキャンセルするわけではありません。進行中の検索は完了し、その結果は引き続き配信されます。進行中の操作に影響を与えることなく、今後の検索で再度解決を行いたい場合にこれを使用してください。
注: この関数はスレッドセーフです。
この関数は Qt 6.12 で導入されました。
lookupHost() およびfromName()も参照してください 。
QHostInfo::HostInfoError QHostInfo::error() const
ホスト名の検索に失敗した場合は、発生したエラーのタイプを返します。それ以外の場合は、NoError を返します。
setError() およびerrorString()も参照してください 。
QString QHostInfo::errorString() const
検索に失敗した場合、この関数はエラーの内容を人間が理解できる形式で返します。それ以外の場合は「不明なエラー」が返されます。
setErrorString() およびerror()も参照してください 。
[static] QHostInfo QHostInfo::fromName(const QString &name)
指定されたホストname の IP アドレスを検索します。この関数は検索中にブロックされるため、検索結果が得られるまでプログラムの実行は一時停止されます。検索結果を `QHostInfo ` オブジェクトとして返します。
ホスト名の代わりにリテラルIPアドレスをname に渡した場合、QHostInfo は当該IPに対応するドメイン名を検索します(つまり、QHostInfo は逆引き検索を実行します)。成功した場合、返されるQHostInfo には、解決されたドメイン名と、そのホスト名に対応するIPアドレスの両方が含まれます。
注: この関数はスレッドセーフです。
関連項目: lookupHost()。
QString QHostInfo::hostName() const
IPアドレスの検索対象となったホストの名前を返します。
setHostName() およびlocalHostName()も参照してください 。
[static] QString QHostInfo::localDomainName()
このマシンの DNS ドメインを返します。
注:DNSドメインは 、Windowsネットワークで見られるドメイン名とは関係ありません。
注: この関数はスレッドセーフです。
関連項目: hostName()。
[static] QString QHostInfo::localHostName()
設定されている場合、このマシンのホスト名を返します。特に自動設定されたホスト名については、グローバルに一意であることが保証されない点に注意してください。
この関数は、返されるホスト名が完全修飾ドメイン名(FQDN)であることを保証しません。完全修飾ドメイン名として取得するには、fromName() を使用して、返された名前をFQDNに解決してください。
この関数は、QSysInfo::machineHostName() と同じ値を返します。
注: この関数はスレッドセーフです。
関連項目: hostName() およびlocalDomainName()。
[static] int QHostInfo::lookupHost(const QString &name, const QObject *receiver, const char *member)
ホスト名 `name` に関連付けられた IP アドレスを検索し、その検索に対する ID を返します。検索結果の準備が整うと、receiver 内のスロットまたはシグナル `member ` が、引数 `QHostInfo ` とともに呼び出されます。その後、QHostInfo オブジェクトを調べることで、検索結果を取得できます。
ルックアップは、単一の関数呼び出しによって実行されます。例えば、次のようにします。
QHostInfo::lookupHost("www.kde.org", this, &MyWidget::lookedUp);このスロットの実装では、検索によって返されたアドレスに関する基本情報を出力するか、検索に失敗した場合はエラーを報告します:
voidMyWidget::lookedUp(constQHostInfo&host)
{
if(host.error()!=QHostInfo::NoError) {
qDebug() << "Lookup failed:" << host.errorString();
return;
}
const autoaddresses=host.addresses();
for(constQHostAddress&address: addresses)
qDebug() << "Found address:" << address.toString();
}ホスト名ではなくリテラルなIPアドレスをname に渡すと、QHostInfo はそのIPアドレスのドメイン名を検索します(つまり、QHostInfo は逆引き検索を実行します)。成功した場合、結果として返されるQHostInfo には、解決されたドメイン名と、そのホスト名に対応するIPアドレスの両方が含まれます。例:
QHostInfo::lookupHost("4.2.2.1", this, &MyWidget::lookedUp);注: lookupHost() を使用して複数のリクエストを開始した場合、シグナルが発行される順序は保証されません 。
注: Qt 6.7 以前のバージョンでは 、この関数は `receiver ` を (非const) `QObject*` として受け取っていました。
注: この関数はスレッドセーフです。
関連項目: abortHostLookup()、addresses()、error()、およびfromName()。
[static] template <typename Functor> int QHostInfo::lookupHost(const QString &name, Functor &&functor)
ホスト名name に関連付けられた IP アドレスを検索し、その検索結果の ID を返します。検索結果の準備が整うと、QHostInfo 引数を渡してfunctor が呼び出されます。その後、QHostInfo オブジェクトを検査することで、検索結果を取得できます。
functor は、lookupHostを呼び出したスレッドで実行されます。そのスレッドでは、Qtのイベントループが実行されている必要があります。
注: lookupHost() を使用して複数のリクエストを開始した場合、シグナルが発信される順序については保証されません 。
これはオーバーロードされた関数です。
注: この関数はスレッドセーフです。
abortHostLookup()、addresses()、error() およびfromName()も参照してください 。
[static] template <typename Functor> int QHostInfo::lookupHost(const QString &name, const QObject *context, Functor functor)
ホスト名name に関連付けられた IP アドレスを検索し、その検索の ID を返します。検索結果の準備が整うと、QHostInfo 引数を指定してfunctor が呼び出されます。その後、QHostInfo オブジェクトを検査することで、検索結果を取得できます。
検索が完了する前にcontext が破棄された場合、functor は呼び出されません。functor はcontext のスレッド内で実行されます。コンテキストのスレッドには、実行中のQtイベントループが存在している必要があります。
この関数の別のシグネチャは以下の通りです:
この場合、検索の結果が準備できたら、receiver 内のスロットまたはシグナルfunction が、QHostInfo 引数とともに呼び出されます。その後、QHostInfo オブジェクトを検査することで、検索の結果を取得できます。
注: `lookupHost()` を使用して複数のリクエストを開始した場合、シグナルが発行される順序については保証されません 。
これはオーバーロードされた関数です。
注: この関数はスレッドセーフです。
abortHostLookup()、addresses()、error()、およびfromName()も参照してください 。
int QHostInfo::lookupId() const
このルックアップのIDを返します。
setLookupId()、abortHostLookup()、およびhostName()も参照してください 。
void QHostInfo::setAddresses(const QList<QHostAddress> &addresses)
このQHostInfo 内のアドレス一覧をaddresses に設定します。
addresses()も参照してください 。
void QHostInfo::setError(QHostInfo::HostInfoError error)
このQHostInfo のエラータイプをerror に設定します。
error() およびerrorString()も参照してください 。
void QHostInfo::setErrorString(const QString &str)
検索に失敗した場合、発生したエラーのわかりやすい説明をstr に設定します。
errorString() およびsetError()も参照してください 。
void QHostInfo::setHostName(const QString &hostName)
このQHostInfo のホスト名をhostName に設定します。
hostName()も参照してください 。
void QHostInfo::setLookupId(int id)
このルックアップのIDを「id 」に設定します。
lookupId() およびlookupHost()も参照してください 。
[noexcept] void QHostInfo::swap(QHostInfo &other)
このホスト情報をother に置き換えます。この操作は非常に高速で、失敗することはありません。
[noexcept] QHostInfo &QHostInfo::operator=(QHostInfo &&other)
other をこのQHostInfo インスタンスに割り当てます。
注: 移動元のオブジェクト other は 、部分的に形成された状態になります。この状態では、有効な操作は破棄と新しい値の代入のみです。
QHostInfo &QHostInfo::operator=(const QHostInfo &other)
other オブジェクトのデータをこのホスト情報オブジェクトに割り当て、その参照を返します。
© 2026 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.