QNetworkInterface Class

QNetworkInterface クラスは、ホストの IP アドレスとネットワーク・インターフェースのリストを提供します。詳細...

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

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

パブリック型

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アドレスはオプションでネットマスクやブロードキャスト・アドレスと関連付けられます。このようなトリオのリストは、addressEntries()で取得できる。また、ネットマスクやブロードキャスト・アドレスなどの情報が不要な場合は、allAddresses ()を使用して、アクティブなインタフェースのIPアドレスだけを取得することもできます。

QNetworkInterface は、hardwareAddress() を使用して、インタフェースのハードウェア・アドレスも報告します。

すべてのオペレーティング・システムがすべての機能の報告をサポートしているわけではありません。すべてのプラットフォームで、このクラスによってリストされることが保証されているのはIPv4アドレスだけです。特に、IPv6アドレスのリストは、Windows、Linux、macOS、およびBSDでのみサポートされています。

QNetworkAddressEntryも参照の こと。

メンバ型ドキュメント

enum QNetworkInterface::InterfaceFlag
flags QNetworkInterface::InterfaceFlags

このネットワーク・インターフェースに関連するフラグを指定します。指定可能な値は以下のとおりです:

定数説明
QNetworkInterface::IsUp0x1ネットワーク・インタフェースが "up "である。
QNetworkInterface::IsRunning0x2ネットワーク・インタフェースが動作している: "up "に設定され、(通常)物理的にネットワークに接続されている。
QNetworkInterface::CanBroadcast0x4ネットワーク・インターフェースがブロードキャスト・モードで動作している
QNetworkInterface::IsLoopBack0x8ネットワークインターフェースがループバックインターフェースである。
QNetworkInterface::IsPointToPoint0x10ネットワーク・インターフェイスがポイント・ツー・ポイント・インターフェイスである。
QNetworkInterface::CanMulticast0x20ネットワークインターフェイスがマルチキャストをサポートしている

1つのネットワーク・インターフェイスがブロードキャスト・ベースとポイント・ツー・ポイントの両方になることはできないことに注意してください。

InterfaceFlags型はQFlags<InterfaceFlag>のtypedefである。InterfaceFlagの値のORの組み合わせを格納する。

enum QNetworkInterface::InterfaceType

このインタフェースのハードウェアタイプ(PHY層、OSIレベル1)を指定する。将来のバージョンの Qt では、新しい列挙値が追加されるかもしれません。

可能な値は以下の通りです:

定数説明
QNetworkInterface::Unknown0インターフェースの種類を決定できなかったか、他の列挙された種類のいずれでもありません。
QNetworkInterface::Loopback1ループバックIPアドレス(127.0.0.1, ::1)が割り当てられている仮想ループバックインタフェース。
QNetworkInterface::Virtual2仮想であると判断されたインターフェースのタイプで、他のタイプのいずれでもないもの。例えば、トンネルインターフェイスは(現在のところ)仮想インターフェイスとして検出される。
QNetworkInterface::Ethernet3IEEE 802.3イーサネットインターフェイス。多くのシステムでは、他のタイプのIEEE 802インターフェイスもイーサネット(特にWi-Fi)として検出されることがあります。
QNetworkInterface::Wifi8IEEE 802.11 Wi-Fi インターフェース。システムによっては、QNetworkInterface 、通常のイーサネットとWi-Fiを区別できず、このenum値を返さない場合があることに注意してください。
QNetworkInterface::Ieee80211WifiWiFiの別名。
QNetworkInterface::CanBus5ISO 11898 コントローラ・エリア・ネットワーク・バス・インターフェース。
QNetworkInterface::Fddi7ANSI X3T12 Fiber Distributed Data Interface(光ファイバーによるローカルエリアネットワーク)。
QNetworkInterface::Ppp6Point-to-Point Protocol インターフェース。下位トランスポート層(多くの場合、無線または物理回線上のシリアル)を介して2つのノード間に直接接続を確立する。
QNetworkInterface::Slip4シリアルラインインターネットプロトコルインターフェイス。
QNetworkInterface::Phonet9Linux Phonet ソケットファミリーを使用した、携帯モデムとの通信用インターフェース。詳細はLinuxカーネルのドキュメントを参照。
QNetworkInterface::Ieee802154106LoWPAN 以外の IEEE 802.15.4 パーソナルエリアネットワークインターフェース (下記参照)。
QNetworkInterface::SixLoWPAN116LoWPAN (IPv6 over Low-power Wireless Personal Area Networks) インターフェースは、IEEE 802.15.4 PHY で動作するが、IPv6 と UDP 用の特定のヘッダー圧縮スキームを持っている。このタイプのインターフェースは、メッシュネットワーキングによく使われる。
QNetworkInterface::Ieee8021612IEEE 802.16 Wireless Metropolitan Area Network。「WiMAX」という商用名でも知られている。
QNetworkInterface::Ieee139413IEEE 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アドレスを返す。これは、QNetworkInterface::IsUp 状態にあるallInterfaces() によって返されたすべてのオブジェクトに対してaddressEntries() を呼び出して、QNetworkAddressEntry オブジェクトのリストを取得し、これらの各オブジェクトに対してQNetworkAddressEntry::ip() を呼び出すのと同じです。

[static] QList<QNetworkInterface> QNetworkInterface::allInterfaces()

ホスト・マシンで見つかったすべてのネットワーク・インタフェースの一覧を返す。失敗した場合は、要素がゼロのリストを返す。

QNetworkInterface::InterfaceFlags QNetworkInterface::flags() const

このネットワーク・インターフェースに関連付けられたフラグを返す。

QString QNetworkInterface::hardwareAddress() const

このインターフェースの低レベルハードウェアアドレスを返します。イーサネット・インターフェースの場合、これはコロンで区切られた文字列表現のMACアドレスになります。

他のタイプのインターフェースでは、他のタイプのハードウェア・アドレスを持つかもしれない。実装は、この関数が有効なMACアドレスを返すことに依存してはならない。

type()も参照のこと

QString QNetworkInterface::humanReadableName() const

Windows 上でこのネットワーク・インタフェースの人間が読める名前("Local Area Connection "など)を返します。判別できなかった場合、この関数はname() と同じものを返す。人間が読み取り可能な名前は、Windowsのコントロール・パネルでユーザーが変更できる名前であるため、プログラムの実行中に変更される可能性がある。

Unixでは、この関数は現在のところ常にname ()と同じものを返す。これは、Unixシステムでは人間が読める名前の構成が保存されていないためである。

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

既知の場合はこのインタフェースの最大伝送単位を、そうでない場合は 0 を返す。

最大伝送単位とは、リンクレベルのフラグメントを発生させることなく、このインターフェイス上で送信できる最大のパケットのことである。アプリケーションはこの値を使用して、フラグメント化されていないUDPデータグラムに収まるペイロードサイズを計算することができる。送信可能なペイロードのサイズを計算するときは、インターフェイス上の通信で使用されるヘッダーのサイズ(例えば、TCP(20バイト)またはUDP(12バイト)、IPv4(20)またはIPv6(40、何らかのヘッダー圧縮がない場合)を差し引くことを忘れないでください。また、宛先までのフルパス(Path 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 ストリームへの参照を返します。

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