QHostAddress Class

QHostAddress クラスは IP アドレスを提供します。詳細...

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

パブリック型

flags ConversionMode
enum ConversionModeFlag { StrictConversion, ConvertV4MappedToIPv4, ConvertV4CompatToIPv4, ConvertLocalHost, ConvertUnspecifiedAddress, TolerantConversion }
enum SpecialAddress { Null, LocalHost, LocalHostIPv6, Broadcast, AnyIPv4, …, Any }

パブリック関数

QHostAddress()
QHostAddress(QHostAddress::SpecialAddress address)
QHostAddress(const QString &address)
QHostAddress(const Q_IPV6ADDR &ip6Addr)
QHostAddress(const quint8 *ip6Addr)
QHostAddress(const sockaddr *sockaddr)
QHostAddress(quint32 ip4Addr)
QHostAddress(const QHostAddress &address)
(since 6.8) QHostAddress(QHostAddress &&other)
~QHostAddress()
void clear()
bool isBroadcast() const
bool isEqual(const QHostAddress &other, QHostAddress::ConversionMode mode = TolerantConversion) const
bool isGlobal() const
bool isInSubnet(const QHostAddress &subnet, int netmask) const
bool isInSubnet(const QPair<QHostAddress, int> &subnet) const
bool isLinkLocal() const
bool isLoopback() const
bool isMulticast() const
bool isNull() const
(since 6.6) bool isPrivateUse() const
bool isSiteLocal() const
bool isUniqueLocalUnicast() const
int protocol() const
QString scopeId() const
void setAddress(quint32 ip4Addr)
void setAddress(QHostAddress::SpecialAddress address)
bool setAddress(const QString &address)
void setAddress(const Q_IPV6ADDR &ip6Addr)
void setAddress(const quint8 *ip6Addr)
void setAddress(const sockaddr *sockaddr)
void setScopeId(const QString &id)
void swap(QHostAddress &other)
quint32 toIPv4Address(bool *ok = nullptr) const
Q_IPV6ADDR toIPv6Address() const
QString toString() const
bool operator!=(QHostAddress::SpecialAddress other) const
bool operator!=(const QHostAddress &other) const
QHostAddress &operator=(QHostAddress::SpecialAddress address)
QHostAddress &operator=(const QHostAddress &address)
bool operator==(QHostAddress::SpecialAddress other) const
bool operator==(const QHostAddress &other) const

静的パブリック・メンバ

QPair<QHostAddress, int> parseSubnet(const QString &subnet)
size_t qHash(const QHostAddress &key, size_t seed = 0)
bool operator!=(QHostAddress::SpecialAddress lhs, const QHostAddress &rhs)
QDataStream &operator<<(QDataStream &out, const QHostAddress &address)
bool operator==(QHostAddress::SpecialAddress lhs, const QHostAddress &rhs)
QDataStream &operator>>(QDataStream &in, QHostAddress &address)

詳細説明

このクラスは、プラットフォームやプロトコルに依存しない方法で IPv4 または IPv6 アドレスを保持します。

QHostAddress は通常、QTcpSocketQTcpServerQUdpSocket とともに使用され、ホストに接続したり、サーバーをセットアップしたりします。

ホスト・アドレスはsetAddress() で設定し、toIPv4Address(),toIPv6Address(),toString() で取得します。タイプはprotocol() で確認できます。

注: QHostAddressはDNS検索を行わないことに注意してください。QHostInfo

このクラスは、一般的な定義済みアドレスもサポートしています:Null LocalHost,LocalHostIPv6,Broadcast, およびAny

QHostInfo,QTcpSocket,QTcpServer, およびQUdpSocketも参照

メンバ型ドキュメント

enum QHostAddress::ConversionModeFlag
flags QHostAddress::ConversionMode

定数説明
QHostAddress::StrictConversion0異なるプロトコルの二つのQHostAddress オブジェクトを比較する際に IPv6 アドレスを IPv4 に変換しません。
QHostAddress::ConvertV4MappedToIPv41比較時にはIPv4マップされたIPv6アドレス(RFC 4291 2.5.5.2節)を変換します。したがって、QHostAddress ("::fff:192.168.1.1")は、QHostAddress ("192.168.1.1")と等しく比較される。
QHostAddress::ConvertV4CompatToIPv42比較時には、IPv4互換のIPv6アドレスに変換する(RFC 4291 2.5.5.1節)。したがって、QHostAddress ("::192.168.1.1")は、QHostAddress ("192.168.1.1")と等しく比較される。
QHostAddress::ConvertLocalHost8比較の際には、IPv6ループバックアドレスをIPv4相当アドレスに変換する。したがって、例えばQHostAddress ("::1")はQHostAddress ("127.0.0.1")と等しく比較されます。
QHostAddress::ConvertUnspecifiedAddress4すなわち、AnyIPv4AnyIPv6 、およびAny。
QHostAddress::TolerantConversion0xff前の3つのフラグをすべて設定します。

ConversionMode型はQFlags<ConversionModeFlag>のtypedefです。ConversionModeFlagの値のORの組み合わせを格納します。

isEqual()も参照

enum QHostAddress::SpecialAddress

定数説明
QHostAddress::Null0ヌルアドレスオブジェクト。QHostAddress() と同等。QHostAddress::isNull() も参照してください。
QHostAddress::LocalHost2IPv4 localhost アドレス。QHostAddress("127.0.0.1") と同じ。
QHostAddress::LocalHostIPv63IPv6 ローカルホストアドレス。QHostAddress("::1")と同じ。
QHostAddress::Broadcast1IPv4ブロードキャストアドレス。QHostAddress("255.255.255.255")と同じ。
QHostAddress::AnyIPv46IPv4 anyアドレス。QHostAddress("0.0.0.0") と同じ。このアドレスでバインドされたソケットは IPv4 インタフェースのみをリッスンする。
QHostAddress::AnyIPv65IPv6 any-address。QHostAddress("::") に相当する。このアドレスでバインドされたソケットは IPv6 インターフェースのみをリッスンする。
QHostAddress::Any4デュアルスタックエニーアドレス。このアドレスでバインドされたソケットは IPv4 と IPv6 の両方のインタフェースをリッスンする。

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

QHostAddress::QHostAddress()

NULLホスト・アドレス・オブジェクトを構築する。

clear()も参照

QHostAddress::QHostAddress(QHostAddress::SpecialAddress address)

address の QHostAddress オブジェクトを構築します。

[explicit] QHostAddress::QHostAddress(const QString &address)

文字列address (例:"127.0.0.1")に基づいてIPv4またはIPv6アドレスを構築する。

setAddress()も参照

[explicit] QHostAddress::QHostAddress(const Q_IPV6ADDR &ip6Addr)

IPv6 アドレスip6Addr を持つホスト・アドレス・オブジェクトを構築する。

[explicit] QHostAddress::QHostAddress(const quint8 *ip6Addr)

IPv6アドレスip6Addr を持つホストアドレスオブジェクトを構築する。

ip6Addr はネットワークバイトオーダー(ビッグエンディアン)の16バイト配列でなければなりません。

[explicit] QHostAddress::QHostAddress(const sockaddr *sockaddr)

ネイティブ構造体sockaddr で指定されたアドレスを使用して IPv4 または IPv6 アドレスを構築する。

setAddress()も参照

[explicit] QHostAddress::QHostAddress(quint32 ip4Addr)

IPv4 アドレスip4Addr を持つホスト・アドレス・オブジェクトを構築する。

QHostAddress::QHostAddress(const QHostAddress &address)

与えられたaddress のコピーを構築する。

[noexcept, since 6.8] QHostAddress::QHostAddress(QHostAddress &&other)

移動-other から新しい QHostAddress を構築します。

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

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

[noexcept] QHostAddress::~QHostAddress()

ホスト・アドレス・オブジェクトを破棄する。

void QHostAddress::clear()

ホストアドレスをNULLに設定し、プロトコルをQAbstractSocket::UnknownNetworkLayerProtocol に設定する。

QHostAddress::Nullも参照のこと

bool QHostAddress::isBroadcast() const

アドレスがIPv4ブロードキャストアドレスの場合はtrue 、そうでない場合はfalse 。IPv4ブロードキャストアドレスは255.255.255.255である。

この関数は、IPv4ネットワークのローカル・ブロードキャスト・アドレスに対しては真を返さないことに注意。その場合は、QNetworkInterface を使用してローカル・マシンのブロードキャスト・アドレスを取得してください。

isLoopback()、isGlobal()、isMulticast()、isLinkLocal()、isUniqueLocalUnicast()、isPrivateUse()も参照の こと。

bool QHostAddress::isEqual(const QHostAddress &other, QHostAddress::ConversionMode mode = TolerantConversion) const

このホストアドレスが与えられたother アドレスと同じであればtrue を返し、そうでなければfalse を返す。

パラメータmode は、異なるプロトコルのアドレス間で実行される変換を制御する。mode が与えられない場合、デフォルトでTolerantConversion が実行される。

ConversionMode およびoperator==()も参照のこと

bool QHostAddress::isGlobal() const

アドレスがIPv4またはIPv6のグローバルアドレスの場合はtrue 、そうでない場合はfalse 。グローバルアドレスとは、特別な目的(ループバックやマルチキャストなど)や将来の目的のために予約されていないアドレスのことである。

RFC1918によってローカルネットワーク用に予約されたIPv4アドレスと同様に、IPv6の一意なローカルユニキャストアドレスはグローバルアドレスとみなされることに注意すること(isUniqueLocalUnicast()を参照)。

また、IPv6のサイトローカルアドレスは非推奨であり、新しいアプリケーションではグローバルアドレスとみなされるべきであることにも注意すること。この関数は、サイトローカルアドレスに対しても真を返す。

isLoopback()、isSiteLocal()、isUniqueLocalUnicast()、isPrivateUse()も参照のこと

bool QHostAddress::isInSubnet(const QHostAddress &subnet, int netmask) const

このIPがネットワークプレフィックスsubnet とネットマスクnetmask で記述されたサブネット内にある場合、true を返す。

IPがサブネットに属するとみなされるのは、そのサブネットの最下位アドレスと最上位アドレスの間に含まれる場合である。IPバージョン4の場合、最下位アドレスはネットワークアドレスで、最上位アドレスはブロードキャストアドレスである。

subnet 引数は、実際のネットワークアドレス(サブネットの最下位アドレス)である必要はない。そのサブネットに属する有効なIPであれば何でもよい。特に、このオブジェクトが保持するIPアドレスと等しい場合、この関数は常に真を返す(ネットマスクが有効な値である場合)。

parseSubnet()も参照

bool QHostAddress::isInSubnet(const QPair<QHostAddress, int> &subnet) const

これはオーバーロードされた関数である。

このIPがsubnet で記述されたサブネット内にある場合、true を返す。subnetQHostAddress メンバにはネットワークプレフィックスが含まれ、 int (2番目) メンバにはネットマスク (プレフィックス長) が含まれる。

bool QHostAddress::isLinkLocal() const

アドレスがIPv4またはIPv6のリンクローカルアドレスの場合はtrue 、そうでない場合はfalse

IPv4リンクローカルアドレスは、ネットワーク169.254.0.0/16のアドレスである。IPv6リンクローカルアドレスは、ネットワークfe80::/10内のアドレスである。詳しくは、IANAのIPv6アドレス空間レジストリを参照のこと。

isLoopback()、isGlobal()、isMulticast()、isSiteLocal()、isUniqueLocalUnicast()、isPrivateUse()参照のこと。

bool QHostAddress::isLoopback() const

アドレスがIPv6ループバックアドレス、またはIPv4ループバックアドレスのいずれかであれば、true

bool QHostAddress::isMulticast() const

アドレスが IPv4 または IPv6 マルチキャストアドレスの場合はtrue を、それ以外の場合はfalse を返す。

isLoopback()、isGlobal()、isLinkLocal()、isSiteLocal()、isUniqueLocalUnicast()、isPrivateUse()も参照のこと

bool QHostAddress::isNull() const

このホストアドレスがどのホストまたはインターフェイスにとっても有効でない場合はtrue を返します。

デフォルトのコンストラクタは null アドレスを作成します。

QHostAddress::Nullも参照してください

[since 6.6] bool QHostAddress::isPrivateUse() const

アドレスが IPv6 ユニークローカルユニキャストアドレスまたはRFC 1918 によってローカルネットワーク用に予約された IPv4 アドレスの場合はtrue を、それ以外の場合はfalse を返します。

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

isLoopback(),isGlobal(),isMulticast(),isLinkLocal(),isUniqueLocalUnicast(),isBroadcast()も参照してください

bool QHostAddress::isSiteLocal() const

アドレスがIPv6サイトローカルアドレスの場合はtrue 、そうでない場合はfalse

IPv6サイトローカルアドレスとは、ネットワークfec0::/10内のアドレスのことである。詳しくはIANAのIPv6アドレス空間レジストリを参照のこと。

IPv6サイトローカルアドレスは非推奨であり、新しいアプリケーションで依存すべきではない。新しいアプリケーションはこの関数に依存せず、サイトローカルアドレスをグローバルアドレスと同じとみなすべきである(isGlobal ()もtrueを返すのはそのためである)。サイトローカルアドレスは、ユニークローカルアドレス(ULA)に置き換えられました。

isLoopback()、isGlobal()、isMulticast()、isLinkLocal()、isUniqueLocalUnicast()、isPrivateUse()も参照のこと

bool QHostAddress::isUniqueLocalUnicast() const

アドレスがIPv6ユニークローカルユニキャストアドレスの場合はtrue 、そうでない場合はfalse

IPv6ユニークローカルユニキャストアドレスとは、ネットワークfc00::/7内のアドレスのことである。詳しくは、IANAのIPv6アドレス空間レジストリを参照のこと。

ユニークローカルユニキャストアドレスはグローバルアドレスとしてもカウントされることに注意してください。RFC4193によると、実際には「アプリケーションはこれらのアドレスをグローバルスコープのアドレスのように扱うことができる」。この区別を気にする必要があるのはルーターだけである。

isLoopback(),isGlobal(),isMulticast(),isLinkLocal(), isUniqueLocalUnicast(),isPrivateUse()も参照のこと

[static] QPair<QHostAddress, int> QHostAddress::parseSubnet(const QString &subnet)

subnet に含まれる IP とサブネット情報を解析し、そのネットワークのネットワークプレフィックスとそのプレフィックス長を返す。

IPアドレスとネットマスクはスラッシュ(/)で区切らなければならない。

この関数は

  • 123.123.123.123/n (n は 0 から 32 までの任意の値)
  • 123.123.123.123/255.255.255.255
  • <ipv6-address>/n(nは0から128までの任意の値

IPバージョン4では、この関数は、末尾にドットが続くかどうかにかかわらず、欠落した構成要素(すなわち、"192.168.1 "のように4オクテット未満)も受け付ける。この場合、ネットマスクも欠落していれば、実際に渡されたオクテット数(上の例では、3オクテットで24となる)が設定される。

isInSubnet()も参照のこと

int QHostAddress::protocol() const

ホストアドレスのネットワークレイヤープロトコルを返します。

QString QHostAddress::scopeId() const

IPv6アドレスのスコープIDを返す。IPv4アドレスの場合、またはアドレスにスコープIDが含まれていない場合は、空のQString

IPv6スコープIDは、非グローバルIPv6アドレスの到達可能範囲を指定し、そのアドレスが使用できる領域を限定する。すべてのIPv6アドレスは、このような到達可能スコープと関連付けられる。スコープIDは、グローバルに一意であることが保証されていないアドレスを曖昧にするために使用される。

IPv6は以下の4つの到達可能性レベルを規定している:

  • ノードローカル:ノードローカル:同じインターフェース上のサービスとの通信にのみ使用されるアドレス(例:ループバックインターフェース「::1」)。
  • リンクローカル:ネットワークインターフェース(リンク)にローカルなアドレス。ホストの各IPv6インターフェースには、必ず1つのリンクローカルアドレスがあります。リンクローカルアドレス(「fe80...」)は、ローカルネットワークアダプターのMACアドレスから生成され、一意であることは保証されません。
  • グローバル:インターネット上の公開サーバーなど、グローバルにルーティング可能なアドレス用。

IPv6接続にリンクローカルまたはサイトローカルアドレスを使用する場合は、スコープIDを指定する必要があります。リンクローカルアドレスのスコープIDは通常、インターフェース名(例:「eth0」、「en1」)または番号(例:「1」、「2」)と同じです。

setScopeId()、QNetworkInterfaceQNetworkInterface::interfaceFromNameも参照のこと

void QHostAddress::setAddress(quint32 ip4Addr)

ip4Addr で指定されたIPv4アドレスを設定する。

void QHostAddress::setAddress(QHostAddress::SpecialAddress address)

これはオーバーロードされた関数である。

address で指定された特殊アドレスを設定する。

bool QHostAddress::setAddress(const QString &address)

これはオーバーロードされた関数である。

address (例:"127.0.0.1")で指定された文字列表現で指定されたIPv4またはIPv6アドレスを設定する。アドレスの解析に成功した場合はtrue を返し、アドレスを設定する。そうでない場合はfalse を返す。

void QHostAddress::setAddress(const Q_IPV6ADDR &ip6Addr)

これはオーバーロードされた関数である。

ip6Addr で指定されたIPv6アドレスを設定する。

void QHostAddress::setAddress(const quint8 *ip6Addr)

これはオーバーロードされた関数である。

ip6Addr で指定されたIPv6アドレスを設定する。

ip6Addr は、ネットワークバイトオーダー(上位バイトが最初)の16バイトの配列でなければなりません。

void QHostAddress::setAddress(const sockaddr *sockaddr)

これはオーバーロードされた関数である。

ネイティブ構造体sockaddr で指定された IPv4 アドレスまたは IPv6 アドレスを設定する。アドレスの解析に成功した場合はtrue を返し、アドレスを設定する。そうでない場合はfalse を返す。

void QHostAddress::setScopeId(const QString &id)

アドレスの IPv6 スコープ ID をid に設定する。 アドレスプロトコルが IPv6 でない場合、この関数は何もしない。スコープIDは、インターフェース名("eth0 "や "en1 "など)として設定することもできるし、インターフェースのインデックスを表す整数として設定することもできる。id がインターフェース名の場合、QtNetwork は、オペレーティング・システムのネットワーク関数を呼び出す前に、QNetworkInterface::interfaceIndexFromName() を使ってインターフェース・インデックスに変換する。

scopeId ()、QNetworkInterfaceQNetworkInterface::interfaceFromNameも参照

[noexcept] void QHostAddress::swap(QHostAddress &other)

このホストアドレスをother と交換する。この操作は非常に速く、失敗することはない。

quint32 QHostAddress::toIPv4Address(bool *ok = nullptr) const

IPv4アドレスを数値で返す。

例えば、アドレスが 127.0.0.1の場合、返される値は2130706433(すなわち0x7f000001)である。

この値は、protocol()がIPv4Protocol 、またはプロトコルがIPv6Protocol 、IPv6アドレスがIPv4マップされたアドレス(RFC4291)の場合に有効である。これらの場合、ok はtrueに設定される。それ以外の場合はfalseに設定される。

toString()も参照のこと

Q_IPV6ADDR QHostAddress::toIPv6Address() const

IPv6アドレスをQ_IPV6ADDR構造体として返す。この構造体は16個の符号なし文字で構成される。

Q_IPV6ADDR addr = hostAddr.toIPv6Address();
// addr contains 16 unsigned characters

for (int i = 0; i < 16; ++i) {
    // process addr[i]
}

この値は、protocol() がIPv6Protocol の場合に有効である。 プロトコルがIPv4Protocol の場合、アドレスはIPv4にマップされたIPv6アドレスとして返される。(RFC4291)。

toString()も参照のこと

QString QHostAddress::toString() const

アドレスを文字列で返す。

例えば、アドレスがIPv4アドレス127.0.0.1の場合、返される文字列は "127.0.0.1 "である。IPv6の場合、文字列形式はRFC5952の勧告に従う。QHostAddress::Any の場合、IPv4アドレスが返される("0.0.0.0")。

toIPv4Address()も参照のこと

bool QHostAddress::operator!=(QHostAddress::SpecialAddress other) const

このホストアドレスが与えられたother アドレスと同じでない場合はtrue を返し、そうでない場合はfalse を返す。

bool QHostAddress::operator!=(const QHostAddress &other) const

このホストアドレスが与えられたother アドレスと同じでない場合はtrue を返し、そうでない場合はfalse を返す。

QHostAddress &QHostAddress::operator=(QHostAddress::SpecialAddress address)

このオブジェクトに特別なアドレスaddress を割り当て、このオブジェクトへの参照を返す。

setAddress()も参照

QHostAddress &QHostAddress::operator=(const QHostAddress &address)

このオブジェクトに別のホストaddress を割り当て、このオブジェクトへの参照を返します。

bool QHostAddress::operator==(QHostAddress::SpecialAddress other) const

このホストアドレスが与えられたother アドレスと同じ場合はtrue を返し、そうでない場合はfalse を返す。

bool QHostAddress::operator==(const QHostAddress &other) const

このホスト・アドレスが与えられたother アドレスと同じ場合はtrue を返し、そうでない場合はfalse を返す。この演算子はisEqual(other,StrictConversion) を呼び出すだけである。

isEqual()も参照のこと

関連する非会員

[noexcept] size_t qHash(const QHostAddress &key, size_t seed = 0)

key のハッシュ値を返す。計算のシードにはseed を使用する。

bool operator!=(QHostAddress::SpecialAddress lhs, const QHostAddress &rhs)

特殊アドレスlhs がホストアドレスrhs と同じ場合はfalse を返し、そうでない場合はtrue を返す。

isEqual()も参照のこと

QDataStream &operator<<(QDataStream &out, const QHostAddress &address)

ホストアドレスaddress をストリームout に書き込み、ストリームへの参照を返します。

Qt データ型のシリアライズ」も参照してください

bool operator==(QHostAddress::SpecialAddress lhs, const QHostAddress &rhs)

特殊アドレスlhs がホストアドレスrhs と同じ場合はtrue を返し、そうでない場合はfalse を返す。

isEqual()も参照のこと

QDataStream &operator>>(QDataStream &in, QHostAddress &address)

ホストアドレスをストリームin からaddress に読み込み、ストリームへの参照を返します。

Qt データ型のシリアライズ」も参照してください

© 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.