Ubuntu18.04 Qt 实现MQTT

这篇具有很好参考价值的文章主要介绍了Ubuntu18.04 Qt 实现MQTT。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是MQTT?

作用是什么(适用场景)?

与其他通讯协议相比,优缺点在那里?

一.安装 MQTT 服务器

使用 EMQ X(开源且可视化管理)

下载 EMQX

下载的是    emqx-5.0.26-ubuntu18.04-amd64.deb 

直接访问:127.0.0.1:18083

无法访问的解决办法:

  • 查看配置文件的默认端口号 (一般在 /etc/emqx/emqx.conf)
  • 查看端口是否占用
  • sudo emqx console 查看报错情况

成功如下:

Ubuntu18.04 Qt 实现MQTT,# Qt,Linux,linux,运维,服务器

二. MQTT库移植

1.QMQTT下载

GitCode - 开发者的代码家园

使用qt打开项目:(注意所选 qmqtt 版本需要和 qt 版本一致)

Ubuntu18.04 Qt 实现MQTT,# Qt,Linux,linux,运维,服务器

直接编译,此时会报错 No file ,为路径错误:

Ubuntu18.04 Qt 实现MQTT,# Qt,Linux,linux,运维,服务器

将代码中头文件切换为绝对路径:

Ubuntu18.04 Qt 实现MQTT,# Qt,Linux,linux,运维,服务器

编译成功,将 release 版本编译后,复制 include 和 lib 两个文件夹 :

Ubuntu18.04 Qt 实现MQTT,# Qt,Linux,linux,运维,服务器

include 文件夹放到源码的 mqtt 文件夹下:

Ubuntu18.04 Qt 实现MQTT,# Qt,Linux,linux,运维,服务器

然后将源码的 mqtt 文件夹放到自己的工程文件目录:

Ubuntu18.04 Qt 实现MQTT,# Qt,Linux,linux,运维,服务器

 lib 文件夹放到自己的项目工程目录下:

Ubuntu18.04 Qt 实现MQTT,# Qt,Linux,linux,运维,服务器

添加现有文件:

Ubuntu18.04 Qt 实现MQTT,# Qt,Linux,linux,运维,服务器

添加外部库:

Ubuntu18.04 Qt 实现MQTT,# Qt,Linux,linux,运维,服务器

 Ubuntu18.04 Qt 实现MQTT,# Qt,Linux,linux,运维,服务器

成功如下:

Ubuntu18.04 Qt 实现MQTT,# Qt,Linux,linux,运维,服务器

三.简单连接使用

1.使用 QMTTX

Ubuntu18.04 Qt 实现MQTT,# Qt,Linux,linux,运维,服务器

本地回环地址/本机IP地址 + 端口号(一般默认 1883)

Ubuntu18.04 Qt 实现MQTT,# Qt,Linux,linux,运维,服务器

成功连接后,自定义 topic 数据:

Ubuntu18.04 Qt 实现MQTT,# Qt,Linux,linux,运维,服务器

 代码测试:

#include "qmqttserver.h"
#include "ui_qmqttserver.h"

QMqttServer::QMqttServer(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::QMqttServer)
{
    ui->setupUi(this);
    mqtt_client=new QMqttClient();
    connect(mqtt_client,&QMqttClient::messageReceived,this,&QMqttServer::recvMsg);
    connect(mqtt_client,&QMqttClient::connected,[=]()
    {
        qDebug()<<"成功连接!";
        subscribeMsg();
    });
    ip_="127.0.0.1";
    port_="1883";
    connectToMqtt();
}

QMqttServer::~QMqttServer()
{
    delete ui;
}
int QMqttServer::connectToMqtt()
{
    mqtt_client->setHostname(ip_.trimmed());
    mqtt_client->setPort(port_.trimmed().toUInt());
    mqtt_client->connectToHost();
}
void QMqttServer::subscribeMsg()
{
    mqtt_client->subscribe(QMqttTopicFilter("testtopic/msg/"));
    qDebug()<<"订阅: testtopic/msg/";
}
void QMqttServer::recvMsg(const QByteArray &message, const QMqttTopicName &topic_)
{
    QByteArray byte_message=const_cast<QByteArray&>(message);
    byte_message.replace("\\","");
//    QString recv_str="["+topic_+"]"+message;
    qDebug()<<topic_.name()<<": "<<QString::fromUtf8(byte_message);
}

 成功订阅:

Ubuntu18.04 Qt 实现MQTT,# Qt,Linux,linux,运维,服务器

 参考:

MQTT通信协议(mosquitto)在Linux上的环境构建与测试_linux展示mqtt连接状态-CSDN博客

Linux下QT编程之MQTT实战_linux上编译mqtt时#include <private/qobject_p.h>找不到-CSDN博客




 文章来源地址https://www.toymoban.com/news/detail-810278.html

到了这里,关于Ubuntu18.04 Qt 实现MQTT的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux | Ubuntu18.04安装WIFI6 AX201驱动完整教程

      本节介绍了如何在Ubuntu18下安装AX201驱动的教程。   WIFI6 AX201是Intel的一款比较新的网卡,默认Ubuntu18是不支持的,表现来看就是WIFI那里显示“No WIFI Adapter Found”(找不到WIFI适配器)。因此需要手动安装该网卡的驱动程序,此外还需要额外的安装一个驱动程序才能解决该

    2024年02月14日
    浏览(210)
  • VMware虚拟机中安装Ubuntu18.04(linux发行版)【超详细图文教程】

    最近在学习《操作系统导论》,其中例程是在基于unix的系统上实现的,类似下图这种, 由于 linux系统与unix是一脉相传 ,可以说前者是后者的开源版,在linux系统上同样可以复现书中例程, 所以准备安装一个 linux发行版Ubuntu18.04 什么是Linux发行版? 实际上,Linux只是系统的内

    2024年01月16日
    浏览(70)
  • [linux]Ubuntu 18.04安装arm-linux-gcc交叉编译器的两种方法

    第一种:apt安装法: Ctrl+Alt+T弹出终端,使用如下命令进行arm-linux-gcc的安装:   使用如下命令进行arm-linux-g++的安装:   如果要卸载时使用如下命令进行移除,arm-linux-gcc的卸载:   arm-linux-g++的卸载:  第二种源码安装: 目前网上搜索发现,最多人安装的是4.4.3版本的

    2024年02月05日
    浏览(58)
  • Linux Ubuntu18.04配置Unity3D开发环境并解决VSCode中Dotnet Mono Omnisharp等问题实现MonoBehaviour代码提示

    如果说Windows安装Unity3D、配置Unity3D开发环境已经让人头疼。那么,Linux中搭建Unity3D开发环境就更加让人癫狂了。网上这类教程很少,出现问题都找不到现成的解决方法,很多坑都是自己不断尝试,填补过来的。大致分为以下几个坑:1.Ubuntu18.04配置Unity3D软件不成功;2.VSCode识别

    2024年02月14日
    浏览(54)
  • ubuntu18.04(linux)安装绿联ac650无限网卡(cm448)驱动及失败处理

    ubuntu18.04(linux)安装绿联ac650无限网卡(cm448)驱动踩了一些坑所以特地记录下来,供各位参考 0.插入无线网卡 1.官网下载驱动文件并右键提取到此处(或者打开终端使用解压命令) 驱动链接:绿联驱动下载,提供蓝牙适配器驱动下载,绿联USB百兆千兆网卡驱动下载,USB外置显卡驱动

    2024年02月06日
    浏览(163)
  • Qt5.9 Ubuntu18.04-64位交叉编译目标机为Ubuntu18.04-arm-32位基于RK3288

    文章目录 一、需要准备的材料 二、操作步骤 1.更新软件源 2.安装环境依赖 3.搭建交叉编译环境 4.编译QT 5.安装Qt creator 6.配置Qt kit 三.测试 前言 本文使用VMware虚拟机作为Ubuntu系统载体,采用Ubuntu18.04-64位镜像作为QT编译环境,采用RK3288搭载Ubuntu18.04-arm-32作为QT执行环境。 ① 交

    2024年02月17日
    浏览(49)
  • UBuntu18.04 Qt之双HDMI屏切换

    UBuntu18.04 Qt之双HDMI接2个4K屏并分别设置分辨率、主屏、副屏 在main函数里面添加: mainwindow.h MainWIndow.cpp 左边的4k显示器和右边的4k显示器分别显示程序的主界面

    2024年02月12日
    浏览(58)
  • Ubuntu18.04安装Qt5.14.2

    一、安装 第一步: 官网Index of /archive/qt 下载安装包, 或者国内网址下载 https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/5.9/5.9.0/ 我安装的是QT5.14.2 中的 qt-opensource-linux-x64-5.14.2.run ; 第二步:ctrl+T 打开终端输入命令: 第三步:开始安装 Qt(安装路径有下列两种方式) ,终端输入命令

    2024年02月11日
    浏览(46)
  • 【Linux】在ubuntu18.04系统中配置网络信息(超有用,完美解决,只看这一篇就行了)

    最近用centos搭建hadoop集群已经熟练了,但是学习场景中更多的使用的是ubuntu环境,就安装了ubuntu的环境进行搭建,结果ubuntu在很多地方与centos操作有较大区别,首先网络配置就让我折腾了半天,现在我将我已成功配置好的经验分享给大家 1.首先打开我们的VMware虚拟机,左上角

    2024年02月13日
    浏览(47)
  • 在Ubuntu18.04中搭建基于QT的opencv环境

    前言 在看这篇文章之前,需要读者已经安装了qt环境如果还没有安装可以移步至这篇文章的后半断 链接: qt移植 获取cmake-gui sudo apt-get install cmake-gui 这一步主要是一会儿编译opencv的时候会用到 获取opencv的依赖环境 sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcod

    2024年01月17日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包