이 페이지에서

간단한 MQTT 클라이언트

최소한의 기능만 갖춘 텔레메트리 애플리케이션 만들기.

호스트, 포트, 프로토콜 필드와 웹소켓 및 보안 옵션, 토픽 및 메시지 입력란, 상태 변경 사항을 표시하는 로그를 갖춘 MQTT 클라이언트

'간단한 MQTT 클라이언트'는 최소한의 기능을 갖춘 클라이언트 애플리케이션을 만드는 방법을 보여줍니다.

애플리케이션을 사용하려면 먼저 호스트, 포트, 보안 활성화/비활성화, WebSockets 활성화/비활성화 및 프로토콜을 지정해야 합니다. 그런 다음 ‘연결’을 클릭하세요. 이후 토픽을 구독하고 메시지를 전송하면, 해당 메시지를 수신하게 됩니다. 이 애플리케이션을 두 번 실행할 수도 있습니다. 한 인스턴스에서는 메시지를 게시하고 다른 인스턴스에서는 구독하면 메시지가 전송됩니다.

simpleclient 옵션

  • 호스트 - test.mosquitto.org 또는 broker.hivemq.com을 사용할 수 있습니다.
  • 포트 - 연결할 포트이며, 웹소켓 및 보안 설정 선택에 따라 달라집니다
  • WebSockets - ‘선택됨(활성화됨)’ 또는 ‘선택되지 않음(비활성화됨)’을 지정할 수 있습니다
  • Secure - 다음 중 하나를 지정할 수 있습니다: selected(활성화됨) 또는 not selected(비활성화됨)
  • 프로토콜 - 다음 중 하나를 지정할 수 있습니다
    • mqtt 3.1
    • mqtt 3.1.1
    • mqtt 5.0
  • 토픽 - 게시하거나 구독할 토픽
  • 메시지 - 게시할 경우 해당 토픽에 전송할 메시지

연결 설정

이 설정들은 일반적인 조합이며, test.mosquitto.org에서는 정상적으로 작동합니다. broker.hivemq.com을 사용할 경우 링크에 있는 정보를 확인하십시오. '보안(Secure)'이 활성화된 경우 컴퓨터에 인증서를 설치해야 할 수도 있습니다. 또한 코드 내에서 MQTT 클라이언트에 인증서를 추가해야 할 수도 있습니다.

  • 포트 1883, Secure=비활성화, WebSockets=비활성화 - TCP를 통한 MQTT
  • 포트 8883, 보안=활성화, WebSockets=비활성화 - SSL을 통한 MQTT
  • 포트 8080, 보안=비활성화, WebSockets=활성화 - WebSockets를 통한 MQTT
  • 포트 8081, 보안=활성화, 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 Subscription을 참조하십시오.

파일:

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