QHostAddress Class

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

Header: #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)

Move-constructesother から新しい 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ネットワークのローカル・ブロードキャスト・アドレスに対してはtrueを返さないことに注意。その場合は、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()、QNetworkInterface 、およびQNetworkInterface::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()、QNetworkInterface 、およびQNetworkInterface::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)

seed を計算の種として使用して、ホストアドレスkey のハッシュを返します。

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 データ型のシリアライズ」も 参照してください。

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