QNetworkInformation Class

QNetworkInformationは、ネイティブ・バックエンドを通じて様々なネットワーク情報を公開します。詳細...

ヘッダー #include <QNetworkInformation>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network
以来:Qt 6.1
継承: QObject

パブリックタイプ

enum class Feature { Reachability, CaptivePortal, TransportMedium, Metered }
flags Features
enum class Reachability { Unknown, Disconnected, Local, Site, Online }
(since 6.3) enum class TransportMedium { Unknown, Ethernet, Cellular, WiFi, Bluetooth }

プロパティ

公共機能

QString backendName() const
bool isBehindCaptivePortal() const
bool isMetered() const
QNetworkInformation::Reachability reachability() const
(since 6.3) QNetworkInformation::Features supportedFeatures() const
bool supports(QNetworkInformation::Features features) const
QNetworkInformation::TransportMedium transportMedium() const

シグナル

void isBehindCaptivePortalChanged(bool state)
void isMeteredChanged(bool isMetered)
void reachabilityChanged(QNetworkInformation::Reachability newReachability)
void transportMediumChanged(QNetworkInformation::TransportMedium current)

静的パブリック・メンバー

QStringList availableBackends()
QNetworkInformation *instance()
(since 6.4) bool loadBackendByFeatures(QNetworkInformation::Features features)
(since 6.4) bool loadBackendByName(QStringView backend)
(since 6.3) bool loadDefaultBackend()

詳細説明

QNetworkInformation は、プラグインを通じてネットワーク関連情報へのクロスプラットフォーム・インターフェイスを提供します。

様々なプラグインが様々な機能をサポートすることができるため、どの機能が必要かによってプラグインをロードすることができます。

ほとんどの場合、loadDefaultBackend ()を呼び出して、プラットフォーム固有のバックエンドをロードする方法が推奨されます。これにより、現在のプラットフォームで利用可能な最も適切なバックエンドが自動的に選択され、大半のアプリケーションに適しています。

#include <QCoreApplication>#include <QNetworkInformation>#include <QDebug>voidonReachabilityChanged(QNetworkInformation::Reachability reachability) {switch(reachability) {caseQNetworkInformation::Reachability::Unknown:        qDebug() << "Network reachability is unknown.";
       break;caseQNetworkInformation::Reachability::Disconnected:        qDebug() << "Network is disconnected.";
       break;caseQNetworkInformation::Reachability::Local:        qDebug() << "Network is locally reachable.";
       break;caseQNetworkInformation::Reachability::Site:        qDebug() << "Network can reach the site.";
       break;caseQNetworkInformation::Reachability::Online:        qDebug() << "Network is online.";
       break; } }intmain(intargc, char *argv[]) { // QNetworkInformationがサポートされているかどうかをチェックする。    QCoreApplicationa(argc,argv);// QNetworkInformationがサポートされているかチェックする if(QNetworkInformation::loadDefaultBackend()) { // QNetworkInformationがサポートされているかチェックする。        qWarning() << "QNetworkInformation is not supported on this platform or backend.";
       return 1; }.  QNetworkInformation* netInfo=QNetworkInformation::instance();// reachabilityChangedシグナルに接続するQObject::connect(netInfo, &)QNetworkInformation::reachabilityChanged, &onReachabilityChanged);// 初期ステータスを表示onReachabilityChanged(netInfoo->reachability());returna.exec(); }

より高度な使用例では、開発者は特定の機能や好みに基づいてバックエンドをロードすることを好むかもしれません。loadBackendByFeatures() は、トランスポートの mediom や信号強度の報告など、特定の機能セットをサポートするバックエンドを選択することができます。あるいは、loadBackendByName() を使うと、プラグインをその名前で読み込むことができます。プラグインには、プラットフォーム固有のものやカスタムバックエンドの実装を含めることができます。

QNetworkInformation はシングルトンであり、最初のロードに成功してからQCoreApplication オブジェクトが破棄されるまで生き続けます。QCoreApplication オブジェクトを破棄して再作成する場合は、再度ロードしてプラグインを再初期化する必要があります。

注意: このクラスはシングルトンであると同時にQCoreApplication に依存しているため、QNetworkInformation は常に、最初にQCoreApplication オブジェクトと同じスレッドでロードする必要があります。これは、このオブジェクトもこのスレッドで破棄されるためで、さまざまなバックエンド固有のコンポーネントは、オブジェクトが作成されるのと同じスレッドで破棄されることに依存している場合があります。

QNetworkInformation の使用例として、ネットワーク接続ステータスの監視が考えられます。reachability() は、基礎となるオペレーティング・システムやプラグインから報告される情報に基づいて、システムがオンラインと見なされるかどうかを示します。ただし、この情報は必ずしも正確とは限りません。たとえば、Windowsの場合、オンライン・チェックはマイクロソフトが所有するサーバーへの接続性に依存している可能性があります。そのサーバーに到達できない場合(たとえば、ファイアウォール・ルールが原因)、システムは誤ってオフラインであると報告する可能性があります。そのため、reachability()は、ネットワーク接続を試みる前の決定的な事前チェックとしてではなく、 接続状態を示す一般的なシグナルとして使用すべきである。

reachability ()を効果的に使用するためには、アプリケーションは、それがどのような宛先に到達しようとしているのかを理解する必要がある。例えば、宛先がローカルIPアドレスの場合、Reachability::Local またはReachability::Site で十分かもしれない。宛先が公衆インターネット上であれば、Reachability::Online 。このようなコンテキストがないと、報告された到達可能性を解釈する際に、実際のネットワークアクセスについて誤った仮定をする可能性がある。

警告 LinuxとWindowsだけが、より細かいReachability::SiteReachability::Local オプションをサポートしている。AndroidとAppleのプラットフォームでは、reachability()はOnline、Offline、Unknownのレポートのみに制限されています。したがって、ローカルまたはサイト・レベルの接続を検出するロジックには、適切なプラットフォーム・チェックまたはフォールバックを含める必要があります。

// IPアドレスが "ローカル "であるかどうかを決定するための単純なヘルパーboolisLocalAddress(constQHostAddress&address) {returnaddress.isInSubnet(QHostAddress("192.168.0.0"), 16)||address.isInSubnet(QHostAddress("10.0.0.0"), 8)    ||address.isInSubnet(QHostAddress("172.16.0.0"), 12) ||address.isLoopback(); }intmain(intargc, char *argv[]) { ...// ターゲットIPアドレス (デフォルト: Google DNS)   QStringtargetIpStr=argc> 1 ?argv[1]:"8.8.8.8"QHostAddresstargetIp(targetIpStr);if(targetIp.isNull()) { ...        qWarning() << "Invalid IP address:" << targetIpStr;
       return 1; }// ターゲットに必要な到達可能性のレベルを決定する。   QNetworkInformation::Reachability requiredReachability=isLocalAddress(targetIp)?QNetworkInformation::Reachability::Local : QNetworkInformation::Reachability::Online;// システムから報告された現在の到達可能性を取得するQNetworkInformation::Reachability currentReachability=  networkInfoo->reachability();
    qDebug() << "Target IP:" << targetIp.toString();
    qDebug() << "Target is considered"
            <<(isLocalAddress(targetIp)? "ローカル/サイト.":"外部/オンライン");    qDebug() << "Required reachability level:" << requiredReachability;
    qDebug() << "Current reachability:" << currentReachability;

   if(currentReachability<requiredReachability) { (現在の到達可能性<必要な到達可能性)        qWarning() << "Current network state may not allow reaching the target address.";
    }else{        qDebug() << "Target may be reachable based on current network state.";
    } ...

QNetworkInformation::Featureも参照のこと

メンバー型ドキュメント

enum class QNetworkInformation::Feature
flags QNetworkInformation::Features.

プラグインが現在サポートしているすべての機能をリストします。これはQNetworkInformation::loadBackendByFeatures() で使用できます。

定数説明
QNetworkInformation::Feature::Reachability0x1プラグインがこの機能をサポートしている場合、reachability プロパティは有用な結果を提供します。そうでない場合は、常にReachability::Unknown を返します。QNetworkInformation::Reachability も参照してください。
QNetworkInformation::Feature::CaptivePortal0x2プラグインがこの機能をサポートしている場合、isBehindCaptivePortal プロパティは有用な結果を提供します。そうでない場合は常にfalse を返します。
QNetworkInformation::Feature::TransportMedium0x4プラグインがこの機能をサポートしている場合、transportMedium プロパティは有用な結果を提供します。そうでない場合は、常にTransportMedium::Unknown を返します。QNetworkInformation::TransportMedium も参照してください。
QNetworkInformation::Feature::Metered0x8プラグインがこの機能をサポートしている場合、isMetered プロパティは有用な結果を提供します。そうでない場合は、常にfalse を返します。

Features型はQFlags<Feature>のtypedefである。Feature値のORの組み合わせを格納します。

enum class QNetworkInformation::Reachability

定数説明
QNetworkInformation::Reachability::Unknown0この値が返された場合、接続はされているがOSがまだ完全な接続を確認していないか、この機能がサポートされていない可能性がある。
QNetworkInformation::Reachability::Disconnected1システムが全く接続されていない可能性があることを示す。
QNetworkInformation::Reachability::Local2システムはネットワークに接続されているが、ローカル・ネットワーク上のデバイスにしかアクセスできない可能性があることを示す。
QNetworkInformation::Reachability::Site3システムがネットワークに接続されているが、ローカルサブネットまたはイントラネット上のデバイスにしかアクセスできない可能性があることを示す。
QNetworkInformation::Reachability::Online4システムがネットワークに接続され、インターネットにアクセスできることを示す。

QNetworkInformation::reachabilityも参照のこと

[since 6.3] enum class QNetworkInformation::TransportMedium

現在インターネットに接続できるメディアをリストアップ。

定数説明
QNetworkInformation::TransportMedium::Unknown0OS がアクティブなメディアはないと報告しているか、アクティブなメディアが Qt によって認識されていないか、TransportMedium 機能がサポートされていない場合に返されます。
QNetworkInformation::TransportMedium::Ethernet1現在アクティブな接続がイーサネットを使用していることを示します。注:この値は、Windows が Bluetooth パーソナル・エリア・ネットワークに接続されている場合にも返されることがあります。
QNetworkInformation::TransportMedium::Cellular2現在アクティブな接続がセルラーネットワークを使用していることを示す。
QNetworkInformation::TransportMedium::WiFi3現在アクティブな接続が Wi-Fi を使用していることを示します。
QNetworkInformation::TransportMedium::Bluetooth4現在アクティブな接続が Bluetooth を使用して接続されていることを示します。

この列挙型は Qt 6.3 で導入されました。

QNetworkInformation::transportMediumも参照して ください。

プロパティの説明

[read-only, since 6.2] isBehindCaptivePortal : const bool

ユーザのデバイスがキャプティブポータルの背後にあるかどうかを知ることができます。

このプロパティは、ユーザのデバイスが現在キャプティブポータルの背後にあることが知られているかどうかを示します。この機能は、オペレーティングシステムによるキャプティブポータルの検出に依存しており、これを報告しないシステムではサポートされていません。これがサポートされていないシステムでは、これは常にfalse を返します。

このプロパティは Qt 6.2 で導入されました。

アクセス関数です:

bool isBehindCaptivePortal() const

Notifier シグナル:

void isBehindCaptivePortalChanged(bool state)

[read-only, since 6.3] isMetered : const bool

現在の接続が従量制かどうかをチェックする

このプロパティは、現在の接続が従量制かどうかを返します。アプリケーションで特定のネットワーク要求やアップロードを実行するかどうかを決定する際の指針として使用できます。例えば、このプロパティがtrue である間は、ログや診断をアップロードしたくない場合があります。

voiduploadLogFile() { ... }intmain(intargc, char *argv[]) { ...   QCoreApplicationapp(argc,argv); ...if(netInfo->isMetered()) { ...            qWarning() << "Log upload skipped: Current network is metered.";
            app.quit(); }else{ uploadLogFile(); } ... }

このプロパティは Qt 6.3 で導入されました。

アクセス関数です:

bool isMetered() const

通知シグナル

void isMeteredChanged(bool isMetered)

[read-only] reachability : const Reachability

このプロパティは、システムのネットワーク接続性の現在の状態を保持する。

予想される接続性のレベルを示します。これは、プラグイン/オペレーティングシステムが報告するものにのみ基づいていることに注意してください。特定のシナリオでは、これが間違っていることが知られています。例えば、Windowsの「オンライン」チェックは、デフォルトではWindowsがマイクロソフト所有のサーバーに接続することで実行されます。このサーバーが何らかの理由でブロックされている場合、オンラインに到達できないものと見なされます。このため、接続を試みる前の事前チェックとしては使用しないでください。

アクセス機能

QNetworkInformation::Reachability reachability() const

通知シグナル

void reachabilityChanged(QNetworkInformation::Reachability newReachability)

[read-only, since 6.3] transportMedium : const TransportMedium

このプロパティは、アプリケーションの現在アクティブなトランスポート媒体を保持する。

このプロパティは、そのような情報が利用可能なオペレーティングシステム上で、 アプリケーションの現在アクティブなトランスポートメディアを返す。

例えば、ユーザがWiFi ネットワークの範囲から離れたり、イーサネットケーブルを抜いたり、機内モードを有効にしたりした場合に発生します。

このプロパティは Qt 6.3 で導入されました。

アクセス関数です:

QNetworkInformation::TransportMedium transportMedium() const

Notifier シグナル:

void transportMediumChanged(QNetworkInformation::TransportMedium current)

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

[static] QStringList QNetworkInformation::availableBackends()

現在利用可能なすべてのバックエンド名のリストを返します。

QString QNetworkInformation::backendName() const

現在ロードされているバックエンドの名前を返します。

[static] QNetworkInformation *QNetworkInformation::instance()

もしあれば、QNetworkInformation のインスタンスへのポインタを返します。バックエンドがロードされる前にこのメソッドがコールされた場合は、NULL ポインタを返します。

loadBackendByName()、loadDefaultBackend() およびloadBackendByFeatures()も参照

[static, since 6.4] bool QNetworkInformation::loadBackendByFeatures(QNetworkInformation::Features features)

features をサポートしているバックエンドをロードします。

要求されたバックエンドをロードできた場合、あるいはすでにロードされていた場合はtrue を返します。そうでない場合はfalse を返します。

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

instanceも参照してください

[static, since 6.4] bool QNetworkInformation::loadBackendByName(QStringView backend)

名前がbackend にマッチするバックエンドのロードを試みます (大文字小文字は区別しません)。

リクエストされたバックエンドをロードできた場合、 あるいはすでにロードされていた場合はtrue を返します。そうでない場合はfalse を返します。

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

instanceも参照してください

[static, since 6.3] bool QNetworkInformation::loadDefaultBackend()

プラットフォームデフォルトのバックエンドをロードしようとします。

注意: 6.7 以降では、プラットフォームデフォルトのバックエンドが利用できないか、ロードに失敗した場合に、Reachability をサポートしているバックエンドのロードを試みます。これも失敗すると、すべてのプロパティのデフォルト値のみを返すバックエンドにフォールバックします。

こ のプ ラ ッ ト フ ォーム と プ ラ グ イ ンの対応は以下の と お り です:

プラットフォームプラグイン名
Windowsネットワークリストマネージャー
アップル(macOS/iOS)ネットワーク情報
アンドロイドアンドロイド
リナックスネットワークマネージャー

この関数は、先のロジックで十分な場合に便宜上提供される。特定のプラグインが必要な場合は、代わりにloadBackendByName() またはloadBackendByFeatures() を直接呼び出す必要があります。

ロードする適切なバックエンドを決定し、このバックエンドがすでにロードされている場合、あるいはロードに成功した場合はtrue を返します。他のバックエンドが既にロードされている場合や、選択したバックエンドのロードに失敗した場合はfalse を返します。

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

instance(),loadBackendByName(),loadBackendByFeatures()も参照してください

[since 6.3] QNetworkInformation::Features QNetworkInformation::supportedFeatures() const

現在のバックエンドでサポートされているすべての機能を返します。

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

bool QNetworkInformation::supports(QNetworkInformation::Features features) const

現在ロードされているバックエンドがfeatures をサポートしている場合はtrue を返す。

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