一、搭建MQTT服务器
1、在EMQX\bin目录下打开cmd
参考资料:Docshttps://tkk3kegh6t.feishu.cn/docx/VXMFdll5jorCuLxbRLuc3m9TnXe
2、浏览器进入Dashboard,127.0.0.1:18083,能成功进入证明服务器搭建成功
二、安装mqttfx
1、这里安装mqttfx 1.7.1(用于发布信息)
2、点击小齿轮,配置好相关属性
3、 连接服务器,并且订阅名为test的信息
4、这里发布标题为test的信息,发送的内容自定
5、返回订阅端,可以看到成功接收到主题为test的相关内容
三、下载并安装mosquitto
1、网上有很多C++连接MQTT的函数库方法,这里选用mosquitto,对应的,需要去官网下载mosquitto-2.0.15-install-windows-x64.exe
2、安装好后,需要复制如下文件,是代码运行的必要文件
四、在visual studio中运行C++项目实现订阅功能
1、在visual studio2017中新建项目,这里选用Windows桌面向导
2、将必要文件复制到代码的相应目录下
3、mosquittoTest.cpp代码如下:(由chat生成)
#include "mosquitto.h"
#include <iostream>
#pragma comment(lib, "mosquitto.lib")
const char* g_topic = "control_password"; // 全局变量存储主题名称,这里改为想要订阅的主题名称
// MQTT连接回调函数
void on_connect(struct mosquitto *mosq, void * /* userdata */, int rc) {
if (rc == 0) {
std::cout << "MQTT Connection successful!" << std::endl;
std::cout << "Connection topic: " << g_topic << std::endl; // 使用全局变量打印主题名称
mosquitto_subscribe(mosq, NULL, g_topic, 0);
}
else {
std::cerr << "Failed to connect to MQTT broker with code " << rc << std::endl;
}
}
// MQTT消息接收回调函数
void on_message(struct mosquitto *mosq, void *userdata, const struct mosquitto_message *message) {
std::cout << "Received message on topic " << message->topic << ": " << (char*)message->payload << std::endl;
}
int main() {
struct mosquitto *mosq;
int rc;
// 初始化mosquitto库
mosquitto_lib_init();
// 创建一个新的mosquitto客户端实例
mosq = mosquitto_new(NULL, true, NULL);
if (!mosq) {
std::cerr << "Failed to create Mosquitto client instance" << std::endl;
return 1;
}
// 设置连接回调函数
mosquitto_connect_callback_set(mosq, on_connect);
// 设置消息接收回调函数
mosquitto_message_callback_set(mosq, on_message);
// 连接到MQTT代理
rc = mosquitto_connect(mosq, "127.0.0.1", 1883, 60);
if (rc != MOSQ_ERR_SUCCESS) {
std::cerr << "Unable to connect to MQTT broker: " << mosquitto_strerror(rc) << std::endl;
return 1;
}
// 循环处理MQTT消息
mosquitto_loop_forever(mosq, -1, 1);
// 清理资源
mosquitto_destroy(mosq);
mosquitto_lib_cleanup();
return 0;
}
重点!!!
不添加第三行代码 #pragma comment(lib, "mosquitto.lib") 的话,需要在属性页中添加名为"mosquitto.lib"的依赖项以保证项目正常运行。
4、配置管理器改为64位
5、ctrl+F5运行程序,如图显示MQTT连接成功,并且显示订阅的主题为control_password
6、打开mqttfx,发布主题为control_password,内容ABCDEFG
7、回到代码运行程序,可以看到订阅的信息已经成功打印出来了
end……
这是我第一篇博客,如有错误欢迎各位指正,谢谢!