QHostInfo Class

QHostInfo クラスは、ホスト名検索用の静的関数を提供します。詳細...

Header: #include <QHostInfo>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network

注意:このクラスの関数はすべてリエントラントです。

パブリック型

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)
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 アドレスに関連付けられたホスト名を見つけます。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 オブジェクトに格納されます。addresses() を呼び出してホストの IP アドレスのリストを取得し、hostName() を呼び出してルックアップされたホスト名を取得する。

検索に失敗した場合、error() は発生したエラーのタイプを返します。errorString() は、ルックアップ・エラーについて人間が読める説明を返す。

ルックアップをブロックしたい場合は、QHostInfo::fromName() 関数を使用してください:

QHostInfo info = QHostInfo::fromName("qt-project.org");

QHostInfo は、IDNA および Punycode 標準を通じて国際化ドメイン名 (IDN) をサポートしています。

ローカル・ホストの名前を取得するには、静的なQHostInfo::localHostName() 関数を使用します。

QHostInfoは、オペレーティング・システムが提供するメカニズムを使用して検索を実行します。RFC 6724 に従って、ドメインまたはホストに登録されているすべての IP アドレスが返される保証はありません。

注意: Qt 4.6.1 以降、QHostInfo は DNS ルックアップに 1 つの DNS 専用スレッドではなく、複数のスレッドを使用するようになりました。これにより、パフォーマンスが向上しましたが、以前のバージョンの Qt と比較して、lookupHost() を使用する際のシグナル発信の順序が変更されました。

注意: Qt 4.6.3以降、QHostInfoはパフォーマンス向上のために小さな内部60秒DNSキャッシュを使用しています。

QAbstractSocket,RFC 3492,RFC 6724も参照してください

メンバタイプのドキュメント

enum QHostInfo::HostInfoError

この列挙型は、ホスト名を解決しようとしたときに発生する可能性のあるさまざまなエラーを記述します。

定数説明
QHostInfo::NoError0検索に成功しました。
QHostInfo::HostNotFound1ホストに IP アドレスが見つかりませんでした。
QHostInfo::UnknownError2不明なエラーが発生しました。

error() およびsetError()も参照

メンバ関数 ドキュメント

[explicit] QHostInfo::QHostInfo(int id = -1)

ルックアップ IDid を持つ空のホスト情報オブジェクトを構築します。

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() が返す IDid 、ホスト検索を中止する。

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)も 参照。

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 のスロットまたはシグナルmemberQHostInfo 引数で呼び出される。その後、QHostInfo オブジェクトを検査して、ルックアップの結果を得ることができる。

ルックアップは、例えば1回の関数呼び出しで実行される:

QHostInfo::lookupHost("www.kde.org", this, &MyWidget::lookedUp);

スロットの実装は、ルックアップによって返されたアドレスの基本情報を表示し、失敗した場合はエラーを報告する:

void MyWidget::lookedUp(const QHostInfo &host)
{
    if (host.error() != QHostInfo::NoError) {
        qDebug() << "Lookup failed:" << host.errorString();
        return;
    }

    const auto addresses = host.addresses();
    for (const QHostAddress &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 を (non-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 は呼び出されない。functorcontext のスレッドで実行されます。 コンテキストのスレッドでは、Qt イベントループが実行されている必要があります。

この関数の別のシグネチャを示します:

lookupHost(const QString &name, const QObject *receiver, PointerToMemberFunction function)

この場合、ルックアップの結果が準備できると、receiver のスロットまたはシグナルfunction が、QHostInfo の引数で呼び出されます。そして、QHostInfo オブジェクトを検査して、ルックアップの結果を得ることができる。

注意: lookupHost()で複数のリクエストを開始した場合、シグナルが発せられる順番は保証されません。

abortHostLookup()、addresses()、error()、fromName()も参照

int QHostInfo::lookupId() const

この lookup の 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)

Move-assignother をこのQHostInfo インスタンスに割り当てます。

注意: 移動元のオブジェクトother は部分的に形成された状態に置かれ、この状態で有効な操作は破壊と新しい値の割り当てのみである。

QHostInfo &QHostInfo::operator=(const QHostInfo &other)

other オブジェクトのデータをこのホスト情報オブジェクトに割り当て、その参照を返します。

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。