c++ mqtt客户端_paho | 支持10种语言编写mqtt客户端,总有一款适合你!

1. 轻量级物联网协议 — MQTT

MQTT 全称 Message Queuing Telemetry Transport,即消息队列遥测传输协议,是一种基于发布 publish/订阅 subscribe 模式的"轻量级"通讯协议。

MQTT 协议构建于 TCP/IP 协议上,基于 TCP 传输方式,是一个基于客户端-服务器的消息发布/订阅传输协议

MQTT 协议轻量、简单、开放,特别适合端与端之间进行通信(中间经过服务器),一个使用 MQTT 的物联网系统架构如下:

b26c74641fc711a77bb33c70fdf51f61.png

从图中可以看出,无论是物联网设备,还是用户使用的物联网客户端,只有两种需求:

  • 订阅某个主题
  • 发布某个主题的消息

正因如此,MQTT 用起来非常方便,得到了广泛的应用,在之前的文章中讲述了如何搭建 MQTT 服务器——EMQ-X 服务器。

EMQX MQTT 服务器(上篇)| 使用 EMQ-X 搭建私有 MQTT 服务器

EMQX MQTT 服务器(下篇)| 开启客户端身份安全认证并使用 mqtt.fx 测试

在测试与服务器对接时,讲述了如何使用很好用的 MQTT 客户端软件——mqtt.fx。

mqtt.fx | 一款超级好用的 Mqtt 客户端软件(下载、安装、使用详解)

mqtt.fx 虽然超级好用,但是只能用来测试使用,在实际开发中,我们需要再寻找一个好办法去自己编写 MQTT 客户端,比如:

  • 微信小程序:JavaScript
  • PC 端:Python、Java、C#……
  • 安卓端:Java
  • 嵌入式设备:C

接下来讲述一个非常强大的库,支持用 10 种语言编写 MQTT 客户端,非常棒!

2. Eclipse paho 项目

Eclipse Paho 项目提供了 MQTT 消息传递协议的开源客户端实现,官网如下:

https://www.eclipse.org/paho/

f4db1095f61974b24ca854f729050455.png

Eclipse paho 项目提供了如下语言的库:

  • Java
  • Python
  • JavaScript
  • GoLang
  • C
  • C++
  • Rust
  • Net (C#)
  • Android Service
  • Embedded C/C++

针对这些语言的提供的 MQTT 客户端库目前对 MQTT 协议的支持情况如下:dd74ea3cdf5e0fbe6a79d2203a25f9af.png

3. Eclipse paho 项目库源码

Eclipse paho 项目是开源的,源码全部在 Eclipse 官方 Github 上:

https://github.com/eclipse/

进入其主页后,在过滤器输入 paho,轻轻敲下回车即可过滤出所有的 paho 库:

d9339d096bc0118699a011c0b1036f84.png

选择你需要的语言支持库,进入对应仓库后,其 README 文件中有非常详细的说明,包括:

  • 如何安装库
  • 库的一些限制,说明
  • 库提供的 API
  • API 如何使用说明
  • 示例代码
  • ……

后续有时间我会出个 paho 专题教程,哈哈哈,敬请期待~

关于 paho 库版本的选择,建议大家选择正式发布版,我这儿有一张来自官方的图,仅供参考:

a040969ce32e2994ddb8d1eea6a70d21.png

更多精彩文章及资源,欢迎关注我的微信公众号:『mculover666』。

f4cfa65d4784ecc81f10cb6528eecde0.png

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
paho.mqtt.embedded-c是一个C语言实现的MQTT客户端库,它提供了MQTT协议的完整实现,可以运行在嵌入式系统中。如果你需要在C++项目中使用MQTT客户端,可以使用paho.mqtt.embedded-c库的C++封装,也就是paho.mqtt.cpp库。 paho.mqtt.cpp库是一个基于paho.mqtt.embedded-c库的C++封装,它提供了更加易用的C++ API,使得在C++项目中使用MQTT更加方便。 下面是一个使用paho.mqtt.cpp库实现MQTT客户端的示例代码: ```c++ #include <cstdlib> #include <iostream> #include <cstring> #include <chrono> #include <thread> #include "mqtt/async_client.h" const std::string SERVER_ADDRESS("tcp://localhost:1883"); const std::string CLIENT_ID("paho_cpp_async_subcribe"); const std::string TOPIC("hello"); class callback : public virtual mqtt::callback { public: virtual void connection_lost(const std::string& cause) override { std::cout << "Connection lost: " << cause << std::endl; } virtual void message_arrived(mqtt::const_message_ptr msg) override { std::cout << "Message arrived" << std::endl; std::cout << "Topic: " << msg->get_topic() << std::endl; std::cout << "Payload: " << msg->to_string() << std::endl; } virtual void delivery_complete(mqtt::delivery_token_ptr token) override { std::cout << "Delivery complete" << std::endl; } }; int main(int argc, char* argv[]) { mqtt::async_client client(SERVER_ADDRESS, CLIENT_ID); callback cb; client.set_callback(cb); mqtt::connect_options conn_opts; conn_opts.set_keep_alive_interval(20); conn_opts.set_clean_session(true); std::cout << "Connecting to the MQTT server..." << std::flush; try { mqtt::token_ptr conntok = client.connect(conn_opts); conntok->wait(); std::cout << "OK" << std::endl; } catch (const mqtt::exception& exc) { std::cerr << "\nERROR: Unable to connect to MQTT server: " << exc.what() << std::endl; return 1; } mqtt::token_ptr subtok = client.subscribe(TOPIC, 0); subtok->wait(); std::cout << "Subscribed to topic: " << TOPIC << std::endl; while (true) { std::this_thread::sleep_for(std::chrono::seconds(1)); } client.unsubscribe(TOPIC)->wait(); client.disconnect()->wait(); return 0; } ``` 在这个示例代码中,我们使用paho.mqtt.cpp库来连接到MQTT服务器,订阅一个主题,然后等待消息的到来。当消息到来时,我们会打印出来消息的主题和内容。 如果你需要在C++项目中使用MQTT客户端paho.mqtt.cpp库会是一个不错的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值