ネットワークとコネクティビティ

Qt では、高レベルと低レベルのネットワーク通信用のクラス、Web 統合用のクラス、プロセス間通信(IPC)用のクラスを提供しています。

高レベルのネットワークトラフィックに対して、Qt Networkは使用される操作の抽象化レイヤーを提供し、高レベルのクラスと関数のみを表示します。Qt Networkは、TCPやUDPのような低レベルのプロトコルも扱うことができます。QTcpSocketQUdpSocket のようなクラスによって、TCP や UDP プロトコルを使ったメッセージの送受信が可能になります。名前解決はQHostInfo で行います。QHostInfo は、QTcpSocketQUdpSocket でネットワーク接続を作成する前に呼び出されます。プロキシを介したネットワーク・トラフィックのフィルタリングと再分配は、QNetworkProxy クラスで処理できます。

Qt は、Bluetooth 対応デバイス間の接続を提供するQt Bluetooth のようなモジュールを使用して、システムやアプリケーショ ンを接続するための接続オプションを提供します。Qt Serial Bus は様々な産業用シリアルバスやプロトコルにアクセスするためのクラスや関数を提供し、Qt NFCは NFC 対応デバイス間の接続性を提供します。また、Qt Serial Portは、コンフィギュレーション、I/O 操作、RS-232 ピンアウトの制御信号の取得と設定などの基本機能を提供します。

Qtはプロセス間通信の機能を提供します。QProcess クラスは外部プログラムの起動に使用されます。Qt D-Busは、プロセス間通信とリモートプロシージャ呼び出しメカニズムである D-Bus をサポートします。バスと呼ばれる中央サーバーアプリケーションを介して通信します。QSharedMemory は、複数のスレッドやプロセスによる共有メモリセグメントへのアクセスを提供します。ただし、1つのプロセスがその共有メモリーを排他的にロックすることはできる。

ネットワーク通信

Qt は HTTP、TCP、UDP を中心に、幅広いネットワーク通信をサポートしています。

HTTP レベルでは、Qt Networkモジュールが主にQNetworkRequestQNetworkAccessManagerQNetworkReply で構成されるネットワークアクセス API を提供します。QNetworkRequest は HTTP リクエストのようなもので、QNetworkAccessManager に渡され、リクエストを有線で送信します。このクラスはQNetworkReply を返し、HTTP リプライを解析します。ネットワークアクセスAPIは、内部的に以下のソケットクラス(TCPとSSL用)を使用する。

QTcpSocketソケットレベルでの通信にはQUdpSocketQSslSocket を使用する。これらのクラスは、waitFor*メソッドによる同期APIと、非同期APIを提供します。可能であれば(つまり、イベントループが実行されていれば)、常に非同期APIを優先すべきです。Qtはまた、TCP通信のサーバー側部分を有効にするためのQTcpServer

SSLによるセキュアな通信のために、Qt Networkは中央のQSslSocket と並んで幅広いクラスを提供しています。例えば、QSslCertificateQSslConfigurationQSslError などがあります。

Qt では、XmlHttpRequest を使って明示的に HTTP を利用したり、Image ソースの HTTP URL を透過的に利用したりすることで、QML での HTTP サポートも提供しています。

関連するトピック

  • Qt によるネットワークプログラミング
  • SSL (Secure Sockets Layer) クラス
  • リソースロードとネットワークの透過性- QML におけるネットワークと URL の透過性
  • Qt Network Authorization- Qt アプリケーションがユーザーのパスワードを公開することなく、オンラインアカウントや HTTP サービスへの限定的なアクセスを可能にする API のセットです。
  • Qt Remote Objects- プロセス間通信 (IPC) モジュールで、プロセスやコンピュータ間の情報交換を可能にします。
  • Qt MQTT- パブリッシュアンドサブスクライブパラダイムを使用し、通信オーバーヘッドを最小限に抑えたチャネルを提供するマシンツーマシン(M2M)プロトコル。
  • Qt OPC UA- 参照で接続されたノードのメッシュで構成されたデータへのアクセスを提供するサーバー。異なる参照タイプとメタデータを含むノードを使用することで、クライアントは事前に構造を知らなくてもデータをナビゲートし、解釈することができます。
  • Qt WebSockets- クライアントアプリケーションとリモートホスト間の双方向インタラクティブ通信セッションを可能にするために設計されたウェブベースのプロトコル。最初のハンドシェイクに成功すると、2 つのエンティティがデータを送受信できるようになります。
  • Qt WebChannel- サーバー(QML/C++ アプリケーション)とクライアント(HTML/JavaScript または QML アプリケーション)間のピアツーピア通信を可能にします。Qt WebChannel は QtWebEngine でサポートされています。さらに、WebSocket をサポートするすべてのブラウザで動作するため、Qt WebChannel クライアントをあらゆる JavaScript 環境(QML を含む)で実行することができます。これには、Qt WebSockets をベースにしたカスタムトランスポートを実装する必要があります。
  • Qt Protobuf-.proto ファイルから Qt ベースのクラスを生成するためのジェネレータです。
  • Qt GRPC- proto ファイルでデータとメッセージを定義し、コードジェネレータを使用することができます。コードジェネレータは、Qt フレームワークのフィールドと gRPC サービス用のアクセサを生成します。

接続性

Qt では、Qt Serial BusQt Serial PortQt BluetoothQt NFC を中心に、様々な接続オプションをサポートしています。

  • Qt Serial Bus- CAN、ModBus などの様々な産業用シリアルバスやプロトコルにアクセスするためのクラスや関数を提供します。
  • Qt Serial Port- RS-232 ピンアウトのコンフィギュレーション、I/O 操作、制御信号の取得と設定などの基本機能を提供します。
  • Qt Bluetooth- Bluetoothデバイスを使用するためのクラスと関数を提供し、デバイスのスキャン、情報の収集、デバイス間のデータ交換を行います。Qt Bluetooth は Classic Bluetooth と Low Energy Bluetooth の両方の技術をサポートしています。
  • Qt NFC- NFC 対応デバイス間の接続を確立するためのクラスと関数を提供します。NFC は短距離(20cm 未満)の無線技術で、最大転送速度は 424Kbps です。NFCは、2つのデバイスを一緒に置いたときの小さなデータパケットの転送に最適です。

関連トピック

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