MQTT:windows最简单搭建mqtt服务端及本地客户端测试

一、mqtt服务端搭建

mqtt服务端,推荐使用emq的开源服务端emqx,目前是使用最广泛的mqtt服务端。

github上下载地址为https://github.com/emqx/emqx/releases,当前最新windows版本是

emqx-windows-4.3.6.zip(若后续更新的部分新版本有问题,可以更换下载别的版本或此指定版本)。

1.运行服务端

在需要部署mqtt服务端的远程服务器上,下载emqx压缩包并解压。在bin目录下打开cmd命令行(若cmd所在目录不是bin的目录可以使用cd命令进入指定目录),执行指令emqx.cmd start成功后即会运行mqtt服务端,执行后cmd窗口就可以关闭了,服务已经在后台运行。

emqx.cmd start

注:在windows2012或2016服务器系统中可能会出现运行报错**.dll缺少等的情况,此时需要安装C++运行库即可解决。下载地址为:https://download.csdn.net/download/quan278905570/20673535

2.登录服务端后台

服务端运行后,可以在服务器浏览器中输入地址http://127.0.0.1:18083 进入后台管理,用户名为admin,密码为public

 登录后我们可以看到这三个菜单

1.Clients:当前连接的客户端列表

2.Topics:所有的主题列表

3.subscriptions:订阅用户列表

接下来,你可以用本地主机的客户端连接远程服务器的服务端来进行验证。

二、mqtt本地客户端安装

emq提供了在线web客户端,可以用来连接到emq提供的服务端进行验证和测试。

但在开发环境和生产环境,我们需要部署本地客户端,连接到我们本地服务器上进行调试。

emq的windows本地客户端下载地址MQTTX: Your All-in-one MQTT Client Toolbox

1.连接服务端

运行客户端mqttx程序,点击添加new connection,录入连接名称和服务端IP(此处为连接本机服务端),其他选项不用改,点击connect后,客户端成功连接到服务端。

 2.订阅主题

测试之前需要先订阅主题,类似于关注公众号,只有这样当订阅该主题的其他人(包括自己)发布的消息我们才正常接收到。

点击New Subscription,录入消息主题名称,确定提交。

此处我们订阅了主题是quan的消息,主题可支持多级,用/间隔例如quan/2,如果想要接收子级所有消息,可以使用通配符#,例如 quan/# 

3.发布消息

订阅主题完成,我们测试下发布主题我们自己能否接收到。

在Topic栏输入quan,表示发送消息的主题为quan。

在内容区域默认是Json字符串格式,我们可以简单修改后,点击发送图标的按钮。

上面的消息记录区域,马上会显示发送的消息和接收的消息两个记录。如下图:

以上,mqtt服务端与客户端的演示完成。 

  • 29
    点赞
  • 145
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 24
    评论
以下是使用C++ paho mqtt库中的mqtt::topic发布json对象的示例代码: ```c++ #include <iostream> #include <cstring> #include <cstdlib> #include <cstdio> #include <json/json.h> #include "mqtt/async_client.h" using namespace std; const string ADDRESS("tcp://localhost:1883"); const string CLIENTID("AsyncPublisher"); const string TOPIC("test"); const int QOS = 1;const int TIMEOUT = 10000L; class callback : public virtual mqtt::callback { public: virtual void connection_lost(const std::string& cause) { cout << "\nConnection lost" << endl; if (!cause.empty()) cout << "\tcause: " << cause << endl; } virtual void delivery_complete(mqtt::delivery_token_ptr token) { cout << "\n\tDelivery complete for token: " << (token ? token->get_message_id() : -1) << endl; } }; int main(int argc, char* argv[]) { mqtt::async_client client(ADDRESS, CLIENTID); mqtt::connect_options connOpts; connOpts.set_keep_alive_interval(20); connOpts.set_clean_session(true); callback cb; client.set_callback(cb); try { mqtt::token_ptr conntok = client.connect(connOpts); conntok->wait_for_completion(); Json::Value root; root["name"] = "John"; root["age"] = 25; root["email"] = "john@example.com"; string json_str = root.toStyledString(); mqtt::message_ptr pubmsg = mqtt::make_message(TOPIC, json_str); pubmsg->set_qos(QOS); mqtt::delivery_token_ptr pubtok = client.publish(pubmsg); pubtok->wait_for_completion(TIMEOUT); cout << "Message '" << json_str << "' published to topic '" << TOPIC << "'" << endl; client.disconnect()->wait_for_completion(); } catch (const mqtt::exception& exc) { cerr << exc.what() << endl; return 1; } return 0; } ``` 在这个示例中,我们使用了Jsoncpp库来创建一个Json对象,并将其转换为字符串。然后,我们使用mqtt::make_message()函数创建一个mqtt::message_ptr对象,该对象包含要发布的主题和消息。最后,我们使用mqtt::async_client类的publish()函数将消息发布到主题上。
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋斗鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值