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 } |
プロパティ
(since 6.2)
isBehindCaptivePortal : const bool(since 6.3)
isMetered : const bool- reachability : const Reachability
(since 6.3)
transportMedium : const TransportMedium
公共機能
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::Site とReachability::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::Reachability | 0x1 | プラグインがこの機能をサポートしている場合、reachability プロパティは有用な結果を提供します。そうでない場合は、常にReachability::Unknown を返します。QNetworkInformation::Reachability も参照してください。 |
QNetworkInformation::Feature::CaptivePortal | 0x2 | プラグインがこの機能をサポートしている場合、isBehindCaptivePortal プロパティは有用な結果を提供します。そうでない場合は常にfalse を返します。 |
QNetworkInformation::Feature::TransportMedium | 0x4 | プラグインがこの機能をサポートしている場合、transportMedium プロパティは有用な結果を提供します。そうでない場合は、常にTransportMedium::Unknown を返します。QNetworkInformation::TransportMedium も参照してください。 |
QNetworkInformation::Feature::Metered | 0x8 | プラグインがこの機能をサポートしている場合、isMetered プロパティは有用な結果を提供します。そうでない場合は、常にfalse を返します。 |
Features型はQFlags<Feature>のtypedefである。Feature値のORの組み合わせを格納します。
enum class QNetworkInformation::Reachability
定数 | 値 | 説明 |
---|---|---|
QNetworkInformation::Reachability::Unknown | 0 | この値が返された場合、接続はされているがOSがまだ完全な接続を確認していないか、この機能がサポートされていない可能性がある。 |
QNetworkInformation::Reachability::Disconnected | 1 | システムが全く接続されていない可能性があることを示す。 |
QNetworkInformation::Reachability::Local | 2 | システムはネットワークに接続されているが、ローカル・ネットワーク上のデバイスにしかアクセスできない可能性があることを示す。 |
QNetworkInformation::Reachability::Site | 3 | システムがネットワークに接続されているが、ローカルサブネットまたはイントラネット上のデバイスにしかアクセスできない可能性があることを示す。 |
QNetworkInformation::Reachability::Online | 4 | システムがネットワークに接続され、インターネットにアクセスできることを示す。 |
QNetworkInformation::reachabilityも参照のこと 。
[since 6.3]
enum class QNetworkInformation::TransportMedium
現在インターネットに接続できるメディアをリストアップ。
定数 | 値 | 説明 |
---|---|---|
QNetworkInformation::TransportMedium::Unknown | 0 | OS がアクティブなメディアはないと報告しているか、アクティブなメディアが Qt によって認識されていないか、TransportMedium 機能がサポートされていない場合に返されます。 |
QNetworkInformation::TransportMedium::Ethernet | 1 | 現在アクティブな接続がイーサネットを使用していることを示します。注:この値は、Windows が Bluetooth パーソナル・エリア・ネットワークに接続されている場合にも返されることがあります。 |
QNetworkInformation::TransportMedium::Cellular | 2 | 現在アクティブな接続がセルラーネットワークを使用していることを示す。 |
QNetworkInformation::TransportMedium::WiFi | 3 | 現在アクティブな接続が Wi-Fi を使用していることを示します。 |
QNetworkInformation::TransportMedium::Bluetooth | 4 | 現在アクティブな接続が 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.