QNetworkInterface Class
QNetworkInterface クラスは、ホストの IP アドレスおよびネットワークインターフェースの一覧を提供します。詳細...
| ヘッダー: | #include <QNetworkInterface> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
| qmake: | QT += network |
- 継承されたメンバーを含む、すべてのメンバーの一覧
- QNetworkInterfaceは、ネットワークプログラミングAPIおよび暗黙的に共有されるクラスの一部です。
注:このクラスのすべての関数は再入可能です。
パブリック型
| enum | InterfaceFlag { IsUp, IsRunning, CanBroadcast, IsLoopBack, IsPointToPoint, CanMulticast } |
| flags | InterfaceFlags |
| enum | InterfaceType { Unknown, Loopback, Virtual, Ethernet, Wifi, …, Ieee1394 } |
パブリック関数
| QNetworkInterface() | |
| QNetworkInterface(const QNetworkInterface &other) | |
| ~QNetworkInterface() | |
| QList<QNetworkAddressEntry> | addressEntries() const |
| QNetworkInterface::InterfaceFlags | flags() const |
| QString | hardwareAddress() const |
| QString | humanReadableName() const |
| int | index() const |
| bool | isValid() const |
| int | maximumTransmissionUnit() const |
| QString | name() const |
| void | swap(QNetworkInterface &other) |
| QNetworkInterface::InterfaceType | type() const |
| QNetworkInterface & | operator=(const QNetworkInterface &other) |
静的パブリック メンバー
| QList<QHostAddress> | allAddresses() |
| QList<QNetworkInterface> | allInterfaces() |
| QNetworkInterface | interfaceFromIndex(int index) |
| QNetworkInterface | interfaceFromName(const QString &name) |
| int | interfaceIndexFromName(const QString &name) |
| QString | interfaceNameFromIndex(int index) |
関連する非メンバー
| QDebug | operator<<(QDebug debug, const QNetworkInterface &networkInterface) |
詳細な説明
QNetworkInterface は、プログラムが実行されているホストに接続された 1 つのネットワークインターフェースを表します。各ネットワークインターフェースには、0 個以上の IP アドレスが含まれる可能性があり、それぞれの IP アドレスには、オプションでネットマスクやブロードキャストアドレスが関連付けられます。 このような3つの組み合わせのリストは、addressEntries() を使用して取得できます。あるいは、ネットマスクやブロードキャストアドレス、その他の情報が必要ない場合は、allAddresses() という便利関数を使用して、アクティブなインターフェースの IP アドレスのみを取得することもできます。
QNetworkInterface は、hardwareAddress() を使用して、インターフェースのハードウェアアドレスも報告します。
すべてのオペレーティングシステムがすべての機能の報告をサポートしているわけではありません。すべてのプラットフォームで、このクラスによって確実に一覧表示されるのは IPv4 アドレスのみです。特に、IPv6 アドレスの一覧表示は、Windows、Linux、macOS、および BSD でのみサポートされています。同様に、type() によって報告されるインターフェースタイプも、すべてのプラットフォームで利用可能とは限りません。
注: Androidでは 、プラットフォームが物理インターフェースのハードウェアタイプ情報を公開していないため、インターフェースタイプは常に `Unknown` として報告されます。
QNetworkAddressEntryも参照してください 。
メンバ型のドキュメント
enum QNetworkInterface::InterfaceFlag
flags QNetworkInterface::InterfaceFlags
このネットワークインターフェースに関連付けられたフラグを指定します。取り得る値は次のとおりです。
| 定数 | 値 | 説明 |
|---|---|---|
QNetworkInterface::IsUp | 0x1 | ネットワークインターフェースが「up」状態である - 管理者の操作により有効化されている |
QNetworkInterface::IsRunning | 0x2 | ネットワークインターフェースが稼働中である:「up」に設定されており、(通常)ネットワークに物理的に接続されている |
QNetworkInterface::CanBroadcast | 0x4 | ネットワークインターフェースがブロードキャストモードで動作している |
QNetworkInterface::IsLoopBack | 0x8 | ネットワークインターフェースはループバックインターフェースである。つまり、宛先がホストコンピュータ自体である仮想インターフェースである |
QNetworkInterface::IsPointToPoint | 0x10 | ネットワークインターフェースはポイントツーポイントインターフェースです。つまり、そこから直接到達できるアドレスは、他に1つだけあります。 |
QNetworkInterface::CanMulticast | 0x20 | ネットワークインターフェースはマルチキャストに対応している |
なお、1 つのネットワークインターフェースが、ブロードキャストベースであると同時にポイント・ツー・ポイントであることはできません。
InterfaceFlags 型は、QFlags<InterfaceFlag> の typedef です。これは、InterfaceFlag 値の論理和(OR)を格納します。
enum QNetworkInterface::InterfaceType
このインターフェースのハードウェアの種類(PHY層、OSIレベル1)が特定可能な場合、それを指定します。以下に挙げるもの以外のインターフェースタイプは、通常「Unknown」として表示されますが、将来のQtのバージョンでは新しい列挙値が追加される可能性があります。
取り得る値は以下の通りです:
| 定数 | 値 | 説明 |
|---|---|---|
QNetworkInterface::Unknown | 0 | インターフェースの種類を特定できなかったか、または以下に列挙された種類には該当しません。 |
QNetworkInterface::Loopback | 1 | ループバック IP アドレス (127.0.0.1、::1) が割り当てられた仮想ループバックインターフェース。 |
QNetworkInterface::Virtual | 2 | 仮想であると判定されたインターフェースのタイプですが、他の可能性のあるタイプには該当しません。たとえば、トンネルインターフェースは(現在)仮想インターフェースとして検出されます。 |
QNetworkInterface::Ethernet | 3 | IEEE 802.3 イーサネットインターフェース。ただし、多くのシステムでは、他のタイプの IEEE 802 インターフェースもイーサネットとして検出される場合があります(特に Wi-Fi)。 |
QNetworkInterface::Wifi | 8 | IEEE 802.11 Wi-Fi インターフェース。一部のシステムでは、QNetworkInterface が通常のイーサネットと Wi-Fi を区別できず、この列挙値を返さない場合があることに注意してください。 |
QNetworkInterface::Ieee80211 | Wifi | WiFi の別名。 |
QNetworkInterface::CanBus | 5 | ISO 11898 コントローラ・エリア・ネットワーク(CAN)バスインターフェース。通常、自動車システムに見られます。 |
QNetworkInterface::Fddi | 7 | ANSI X3T12 ファイバー分散データインターフェース。光ファイバーを介したローカルエリアネットワーク。 |
QNetworkInterface::Ppp | 6 | Point-to-Point Protocol インターフェース。下位のトランスポート層(多くの場合、無線または物理回線上のシリアル通信)を介して、2 つのノード間の直接接続を確立する。 |
QNetworkInterface::Slip | 4 | シリアルラインインターネットプロトコル (SLIP) インターフェース。 |
QNetworkInterface::Phonet | 9 | Linux Phonet ソケットファミリーを使用するインターフェース。セルラーモデムとの通信に用いられる。詳細については、Linux カーネルのドキュメントを参照のこと。 |
QNetworkInterface::Ieee802154 | 10 | IEEE 802.15.4 パーソナルエリアネットワークインターフェース。6LoWPAN(後述)を除く。 |
QNetworkInterface::SixLoWPAN | 11 | 6LoWPAN (IPv6 over Low-power Wireless Personal Area Networks) インターフェース。IEEE 802.15.4 PHY 上で動作しますが、IPv6 および UDP 用の特定のヘッダー圧縮方式を採用しています。このタイプのインターフェースは、メッシュネットワークによく使用されます。 |
QNetworkInterface::Ieee80216 | 12 | IEEE 802.16 無線メトロポリタンエリアネットワーク。商用名称「WiMAX」としても知られています。 |
QNetworkInterface::Ieee1394 | 13 | IEEE 1394 インターフェース(別名「FireWire」)。 |
メンバ関数のドキュメント
QNetworkInterface::QNetworkInterface()
空のネットワークインターフェースオブジェクトを生成します。
QNetworkInterface::QNetworkInterface(const QNetworkInterface &other)
other に含まれるQNetworkInterfaceオブジェクトのコピーを作成します。
[noexcept] QNetworkInterface::~QNetworkInterface()
QNetworkInterface オブジェクトに関連付けられたリソースを解放します。
QList<QNetworkAddressEntry> QNetworkInterface::addressEntries() const
このインターフェースが持つ IP アドレスの一覧と、それに関連付けられたネットマスクおよびブロードキャストアドレスを返します。
ネットマスクやブロードキャストアドレス、その他の情報が不要な場合は、allAddresses() 関数を呼び出すことで、アクティブなインターフェースの IP アドレスのみを取得できます。
[static] QList<QHostAddress> QNetworkInterface::allAddresses()
この便利関数は、ホストマシン上で検出されたすべてのIPアドレスを返します。これは、allInterfaces()によって返されたオブジェクトのうち、QNetworkInterface::IsUp 状態にあるものすべてに対してaddressEntries()を呼び出し、QNetworkAddressEntry オブジェクトのリストを取得した後、それらの各オブジェクトに対してQNetworkAddressEntry::ip()を呼び出すのと同じ効果があります。
[static] QList<QNetworkInterface> QNetworkInterface::allInterfaces()
ホストマシン上で検出されたすべてのネットワークインターフェースの一覧を返します。失敗した場合は、要素数が0のリストを返します。
QNetworkInterface::InterfaceFlags QNetworkInterface::flags() const
このネットワークインターフェースに関連付けられたフラグを返します。
QString QNetworkInterface::hardwareAddress() const
このインターフェースの低レベルハードウェアアドレスを返します。イーサネットインターフェースの場合、これはコロンで区切られた文字列形式のMACアドレスとなります。
その他のインターフェースタイプでは、異なる形式のハードウェアアドレスが返される場合があります。実装では、この関数が有効なMACアドレスを返すことを前提にしてはなりません。
type()も参照してください 。
QString QNetworkInterface::humanReadableName() const
Windows 上で、このネットワークインターフェイスの「人間が読みやすい名前」(「ローカルエリア接続」など)を、その名前を特定できた場合に返します。特定できなかった場合、この関数は `name()` と同じ値を返します。 人間が読みやすい名前とは、ユーザーが Windows のコントロールパネルで変更できる名前であるため、プログラムの実行中に変更される可能性があります。
Unix では、Unix システムは人間が読みやすい名前の設定を保存していないため、この関数は現在、常にname() と同じ値を返します。
int QNetworkInterface::index() const
インターフェースのシステムインデックスが判明している場合は、それを返します。これは、このインターフェースを識別するためにオペレーティングシステムによって割り当てられた整数であり、通常は変化しません。これは、IPv6アドレスのスコープIDフィールドと一致します。
インデックスが不明な場合、この関数は 0 を返します。
[static] QNetworkInterface QNetworkInterface::interfaceFromIndex(int index)
内部IDがindex であるインターフェースに対するQNetworkInterface オブジェクトを返します。ネットワークインターフェースには、システム上の他のインターフェースと区別するために「インターフェースインデックス」と呼ばれる一意の識別子があります。多くの場合、この値は連番で割り当てられ、一度削除されてから再度追加されたインターフェースには、その都度異なる値が割り当てられます。
このインデックスは、IPv6アドレスのスコープIDフィールドにも含まれています。
[static] QNetworkInterface QNetworkInterface::interfaceFromName(const QString &name)
name という名前のインターフェースに対するQNetworkInterface オブジェクトを返します。そのようなインターフェースが存在しない場合、この関数は無効なQNetworkInterface オブジェクトを返します。
文字列name は、実際のインターフェース名(「eth0」や「en1」など)か、文字列形式のインターフェースインデックス(「1」、「2」など)のいずれかです。
name() およびisValid()も参照してください 。
[static] int QNetworkInterface::interfaceIndexFromName(const QString &name)
name という名前のインターフェースのインデックスを返します。その名前のインターフェースが存在しない場合は 0 を返します。この関数は、以下のコードと同じ結果を生成するはずですが、おそらく実行速度は速いでしょう。
QNetworkInterface::interfaceFromName(name).index()interfaceFromName()、interfaceNameFromIndex()、およびQNetworkDatagram::interfaceIndex()も参照してください 。
[static] QString QNetworkInterface::interfaceNameFromIndex(int index)
インデックスが `index ` のインターフェース名を返します。そのインデックスを持つインターフェースが存在しない場合は、空の文字列を返します。この関数は、以下のコードと同じ結果を生成するはずですが、おそらく実行速度は速いでしょう。
QNetworkInterface::interfaceFromIndex(index).name()interfaceFromIndex()、interfaceIndexFromName()、およびQNetworkDatagram::interfaceIndex()も参照してください 。
bool QNetworkInterface::isValid() const
この `QNetworkInterface ` オブジェクトにネットワークインターフェースに関する有効な情報が含まれている場合、true を返します。
int QNetworkInterface::maximumTransmissionUnit() const
このインターフェースの最大伝送単位(MTU)がわかっている場合はそれを返し、そうでない場合は0を返します。
最大伝送単位(MTU)とは、リンクレベルでのフラグメンテーションを引き起こすことなく、このインターフェース上で送信可能な最大のパケットのことです。アプリケーションは、この値を使用して、フラグメンテーションされていないUDPデータグラムに収まるペイロードのサイズを計算することができます。 送信可能なペイロードのサイズを計算する際は、そのインターフェースを介した通信で使用されるヘッダーのサイズ(例:TCP(20バイト)やUDP(12バイト)、IPv4(20バイト)やIPv6(40バイト、何らかのヘッダー圧縮がない場合))を差し引くことを忘れないでください。 また、宛先までの全経路におけるMTU(パスMTU)は、インターフェースのMTUよりも小さい場合がある点にも注意してください。
QUdpSocketも参照してください 。
QString QNetworkInterface::name() const
このネットワークインターフェースの名前を返します。Unix システムでは、これはインターフェースの種類と、場合によっては連番を含む文字列(例:「eth0」、「lo」、「pcn0」など)となります。Windows では、ユーザーが変更できない内部 ID となります。
[noexcept] void QNetworkInterface::swap(QNetworkInterface &other)
このネットワークインターフェースのインスタンスを、other と入れ替えます。この操作は非常に高速で、失敗することはありません。
QNetworkInterface::InterfaceType QNetworkInterface::type() const
このインターフェースの型を特定できる場合は、その型を返します。特定できない場合、この関数はQNetworkInterface::Unknown を返します。
hardwareAddress()も参照してください 。
QNetworkInterface &QNetworkInterface::operator=(const QNetworkInterface &other)
other に含まれるQNetworkInterface オブジェクトの内容を、このオブジェクトにコピーします。
関連する非メンバー
QDebug operator<<(QDebug debug, const QNetworkInterface &networkInterface)
QNetworkInterface networkInterface をストリームに書き込み、debug ストリームへの参照を返します。
© 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.