シンプルなMQTTクライアント
最小限のテレメトリアプリケーションの作成。

「シンプルなMQTTクライアント」では、最小限の機能を持つクライアントアプリケーションの作成方法を紹介します。
アプリケーションを使用するには、まずホスト、ポート、セキュリティの有効/無効、WebSocketsの有効/無効、およびプロトコルを指定します。その後、「接続」をクリックします。その後、トピックを購読してメッセージを送信すると、そのメッセージを受信することもできます。 また、このアプリケーションを2つ起動することも可能です。一方ではパブリッシュを行い、もう一方ではサブスクライブを行うと、メッセージが送信されます。
simpleclientのオプション
- ホスト - test.mosquitto.org または broker.hivemq.com を使用できます
- ポート - 接続先のポート。WebSocketsおよび「Secure」の選択内容によって異なります
- WebSockets - 「選択済み(有効)」または「選択なし(無効)」を指定できます
- Secure - 指定可能:選択(有効)または未選択(無効)
- プロトコル - 以下を指定できます
- mqtt 3.1
- mqtt 3.1.1
- mqtt 5.0
- トピック - パブリッシュまたはサブスクライブするトピック
- メッセージ - パブリッシュする場合、そのトピックに送信するメッセージ
接続設定
これらは一般的な設定の組み合わせであり、test.mosquitto.org では動作します。broker.hivemq.com を使用する場合は、リンク先の情報を確認してください。なお、「Secure」が有効になっている場合、コンピュータに証明書をインストールする必要がある場合があります。また、コード内で MQTT クライアントに証明書を追加する必要がある場合もあります。
- ポート 1883、Secure=無効、WebSockets=無効 - TCP 経由の MQTT
- ポート 8883、Secure=有効、WebSockets=無効 - SSL 経由の MQTT
- ポート 8080、Secure=無効、WebSockets=有効 - WebSockets 経由の MQTT
- ポート 8081、Secure=有効、WebSockets=有効 - セキュアWebSockets経由のMQTT
ブローカーに関する詳細については、以下を参照してください:
注:ポート 番号 1883 および 8080 は暗号化されていないため、開発およびテスト目的でのみ適しています。本番環境では、常に暗号化された接続を使用してください。
注:WebAssemblyは 、WebSocketsが有効になっている場合のみサポートされます。
クライアントの作成
まず、QMqttClient クラスを使用してMQTTクライアントを作成します。このクラスには、一意のクライアントIDや、接続先のブローカーのホスト名およびポートを設定するためのプロパティが用意されています:
m_client = new QMqttClient(this);
m_client->setHostname(ui->lineEditHost->text());
m_client->setPort(static_cast<quint16>(ui->spinBoxPort->value()));クライアントIDは設定しないため、自動的に生成されます。
次に、QMqttClient::messageReceived() を呼び出してブローカーに送信されるすべてのメッセージを受信します:
connect(m_client, &QMqttClient::messageReceived, this, [this](const QByteArray &message, const QMqttTopicName &topic) {
const QString content = QDateTime::currentDateTime().toString()
+ " Received Topic: "_L1
+ topic.name()
+ " Message: "_L1
+ message
+ u'\n';
ui->editLog->insertPlainText(content);
});ユーザーがクライアントでトピックを購読する際は、指定されたトピックに対してQMqttClient::subscribe() を呼び出します:
void MainWindow::on_buttonSubscribe_clicked()
{
auto subscription = m_client->subscribe(ui->lineEditTopic->text());
if (!subscription) {
QMessageBox::critical(this, u"Error"_s,
u"Could not subscribe. Is there a valid connection?"_s);
return;
}この例では、すべてのトピックを購読しています。特定のトピックのメッセージを受信する方法の詳細については、「MQTT サブスクリプション」の例を参照してください。
Qt Quick アプリケーションでQMqttClient クラスを使用する方法の例については、「Qt Quick サブスクリプション」を参照してください。
ファイル:
© 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.