使用MQTT.fx和自定义Client(Ubuntu上实现)测试MQTT服务器(EMQX )

使用MQTT.fx和自定义Client(Ubuntu上实现)测试MQTT服务器(EMQX )本文详细介绍如何 EMQX 配置一个 MQTT 服务器 并使用 MQTT fx 工具 分别实现了 MQTTmessage 的订阅和发送功能

大家好,欢迎来到IT知识分享网。

目录

概述

1 配置EMQX做MQTT服务器

1.1 登录EMQX

1.2 配置EMQX

1.2.1 配置客户端认证

1.2.2 创建用户

2 测试MQTT服务器

2.1 配置MQTT.fx工具

2.2 连接MQTT服务器

3 使用MQTT.fx发布和订阅信息

3.1 在MQTT.fx上发布信息

3. 2 在MQTT.fx上订阅信息

4 Ubuntu上实现MQTT Client

4.1 Ubuntu上编写MQTT Client

4.2 编译和测试

5 MQTT.fx订阅MQTT_USR2 Topic

5.1 MQTT.fx订阅Topic

5.2 EMQX上查看数据流


概述

本文详细介绍如何EMQX配置一个MQTT服务器,并使用MQTT.fx工具,分别实现了MQTT message的订阅和发送功能。还在Ubuntu上实现了一个Client,它可以发布信息,MQTT.fx工具用来订阅该信息,用以测试MQTT服务器的数据发布和订阅功能。

1 配置EMQX做MQTT服务器

1.1 登录EMQX

在Ubuntu上安装好了EMQX之后,然后在第三方电脑上登录该服务器,并做相应的配置。第一步要做的事情是登录该服务器,怎么登录系统?在浏览器上输入网址,会看到如下页面:

使用MQTT.fx和自定义Client(Ubuntu上实现)测试MQTT服务器(EMQX )

这时候需要输入用户名和密码:

类型 内容 注释
username admin 用户名
password public 密码

输入用户名和密码后,点击登录按钮,会进入如下页面,说明已经成功登录到服务器。后面需要做一些相应的配置,使其成为MQTT服务器。

使用MQTT.fx和自定义Client(Ubuntu上实现)测试MQTT服务器(EMQX )

1.2 配置EMQX

1.2.1 配置客户端认证

这里主要配置访问MQTT服务器的方式,数据库信息等类型,配置步骤如下:

step -1:选择Password-Based方式,其目的: 使用客户端用户名、Client ID 与密码进行认证

使用MQTT.fx和自定义Client(Ubuntu上实现)测试MQTT服务器(EMQX )

step-2: 选择内置数据库,这样不用再安装第三方数据了

使用MQTT.fx和自定义Client(Ubuntu上实现)测试MQTT服务器(EMQX )

step – 3: 配置参数,选择默认配置即可

使用MQTT.fx和自定义Client(Ubuntu上实现)测试MQTT服务器(EMQX )

点击创建按钮后,跳到如下页面,数据库创建成功:

使用MQTT.fx和自定义Client(Ubuntu上实现)测试MQTT服务器(EMQX )

1.2.2 创建用户

在如下选项卡中选择配置用户

使用MQTT.fx和自定义Client(Ubuntu上实现)测试MQTT服务器(EMQX )

添加用户信息

使用MQTT.fx和自定义Client(Ubuntu上实现)测试MQTT服务器(EMQX )

笔者使用如上方法创建连个用户:

使用MQTT.fx和自定义Client(Ubuntu上实现)测试MQTT服务器(EMQX )

2 测试MQTT服务器

2.1 配置MQTT.fx工具

笔者已经在EMQX中配置了两个user,现在使用MQTT.fx来连接该服务器,以验证其是否可以正常的功能。在连接EMQX之前,需要在MQTT.fx中创建一个终端。

step – 1: 配置EMQX的IP地址

使用MQTT.fx和自定义Client(Ubuntu上实现)测试MQTT服务器(EMQX )

step-2: 输入用户认证

使用MQTT.fx和自定义Client(Ubuntu上实现)测试MQTT服务器(EMQX )

以上两步完成后,可以尝试连接MQTT服务器

2.2 连接MQTT服务器

点击connect后,看见如下图标颜色,说明MQTT.fx连接服务器成功

使用MQTT.fx和自定义Client(Ubuntu上实现)测试MQTT服务器(EMQX )

在服务器端可以看见如下信息。这时可以在MQTT.fx上发布和订阅信息:

使用MQTT.fx和自定义Client(Ubuntu上实现)测试MQTT服务器(EMQX )

3 使用MQTT.fx发布和订阅信息

3.1 在MQTT.fx上发布信息

定义一个topic : switch

{    "DI1": true,    "DI2": false,    "DI3": false,    "DI4": true,    "DI5": true,    "DI6": false }

使用MQTT.fx和自定义Client(Ubuntu上实现)测试MQTT服务器(EMQX )

3. 2 在MQTT.fx上订阅信息

选择subscribe选项卡,输入订阅的topic,然后在publish选项卡中发布信息,subscribe中可以看见如下信息,说明订阅数据成功:

使用MQTT.fx和自定义Client(Ubuntu上实现)测试MQTT服务器(EMQX )

4 Ubuntu上实现MQTT Client

下面实现一个功能: 在Ubuntu上实现MQTT Client, 然后发布信息至服务器。MQTT.fx订阅该信息,并查看Ubuntu上MQTT Client发布的信息与MQTT.fx接收到的信息是否一致

4.1 Ubuntu上编写MQTT Client

本Client选择连接的用户信息如下:

使用MQTT.fx和自定义Client(Ubuntu上实现)测试MQTT服务器(EMQX )

代码实现如下:

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> ​ #include "MQTTClient.h" ​ #define ADDRESS     "tcp://192.168.1.11" #define CLIENTID   "MQTT_USR2" ​ #define TOPIC       "mytest" #define PAYLOAD     "" ​ #define USERNAME   "mqtt_user2" #define PASSWORD   "" ​ #define QOS         0 #define TIMEOUT     10000L ​ int main(int argc, char* argv[]) {    MQTTClient client;    MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer;    MQTTClient_message pubmsg = MQTTClient_message_initializer;    MQTTClient_deliveryToken token;    int rc; ​    if ((rc = MQTTClient_create(&client, ADDRESS, CLIENTID,        MQTTCLIENT_PERSISTENCE_NONE, NULL)) != MQTTCLIENT_SUCCESS)   {         printf("Failed to create client, return code %d\n", rc);         exit(EXIT_FAILURE);   } ​    conn_opts.keepAliveInterval = 20;    conn_opts.cleansession = 1;    conn_opts.username = USERNAME;    //用户名    conn_opts.password = PASSWORD;    //密码    if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS)   {        printf("Failed to connect, return code %d\n", rc);        exit(EXIT_FAILURE);   } ​    while(1){            pubmsg.payload = PAYLOAD;            pubmsg.payloadlen = (int)strlen(PAYLOAD);            pubmsg.qos = QOS;            pubmsg.retained = 0;            if ((rc = MQTTClient_publishMessage(client, TOPIC, &pubmsg, &token)) !=                MQTTCLIENT_SUCCESS)           {                printf("Failed to publish message, return code %d\n", rc);                exit(EXIT_FAILURE);           } ​            printf("Waiting for up to %d seconds for publication of %s\n"                    "on topic %s for client with ClientID: %s\n",                   (int)(TIMEOUT/1000), PAYLOAD, TOPIC, CLIENTID);            rc = MQTTClient_waitForCompletion(client, token, TIMEOUT);            printf("Message with delivery token %d delivered\n", token);                        sleep(5);   } ​    MQTTClient_destroy(&client);    return rc; }

4.2 编译和测试

在ubuntu上编译代码,使用命令:

 gcc MQTTClient_publish.c -lpaho-mqtt3c

编译成功后,生成.out 文件

使用MQTT.fx和自定义Client(Ubuntu上实现)测试MQTT服务器(EMQX )

运行该文件,可以看见,该客户端已经能正常的发送数据:

使用MQTT.fx和自定义Client(Ubuntu上实现)测试MQTT服务器(EMQX )

在EMQX上可以看见,MQTT_USR2已经在线

使用MQTT.fx和自定义Client(Ubuntu上实现)测试MQTT服务器(EMQX )

5 MQTT.fx订阅MQTT_USR2 Topic

5.1 MQTT.fx订阅Topic

现在实现一个功能MQTT.fx订阅MQTT_USR2 Topic,根据MQTT_USR2的代码可知,其发布数据的topic 为:

使用MQTT.fx和自定义Client(Ubuntu上实现)测试MQTT服务器(EMQX )

在MQTT.fx上订阅该Topic: mytest

使用MQTT.fx和自定义Client(Ubuntu上实现)测试MQTT服务器(EMQX )

5.2 EMQX上查看数据流

登录EMQX,在客户端栏上选择当前用户,可以看见当前Client数据流的详细情况

使用MQTT.fx和自定义Client(Ubuntu上实现)测试MQTT服务器(EMQX )

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/127988.html

(0)
上一篇 2025-09-03 19:45
下一篇 2025-09-03 20:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信