当前位置: 首页 > wzjs >正文

黄冈网站推广软件下载大型游戏网页游戏大全

黄冈网站推广软件下载,大型游戏网页游戏大全,网站源代码下载,h5成品网站MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种基于发布/订阅(Publish/Subscribe)模式的轻量级消息传输协议,专为低带宽、高延迟或不可靠的网络环境设计。它构建在TCP/IP协议之上&…

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)是一种基于发布/订阅(Publish/Subscribe)模式的轻量级消息传输协议,专为低带宽、高延迟或不可靠的网络环境设计。它构建在TCP/IP协议之上,由IBM的Andy Stanford-Clark和Cirrus Link的Arlen Nipper于1999年共同开发,旨在为硬件性能低下的远程设备提供一种高效的通信方式。

MQTT协议的基本组成

  • MQTT客户端:任何通过网络使用MQTT进行通信的设备,可以是发布者(Publisher)或订阅者(Subscriber)。发布者将消息发送到特定的主题(Topic),而订阅者则订阅感兴趣的主题来接收消息。
  • MQTT代理(Broker):作为中间件,接收来自发布者的消息,并根据主题将消息分发给所有已订阅该主题的订阅者。代理还负责其他任务,如授权和身份验证、将消息传递给其他系统、处理错过的消息和客户端会话等。
  • 主题(Topic):用于标识消息的类别或内容的字符串,订阅者可以根据主题来选择感兴趣的消息。主题是分层组织的,类似于文件或文件夹目录。

MQTT协议的工作原理

  1. 建立连接:客户端通过向MQTT代理发送CONNECT消息来启动连接,代理通过响应CONNACK消息来确认已建立连接。
  2. 发布消息:客户端可以将消息发布到特定的主题。消息包含主题和数据,数据格式可以是文本、二进制、XML或JSON等。
  3. 订阅主题:客户端向代理发送SUBSCRIBE消息,以接收有关感兴趣主题的消息。此消息包含唯一标识符和订阅列表。
  4. 接收消息:代理收到一条消息后,会将其转发给所有已订阅该主题的订阅者。

MQTT协议的特点

  • 轻量级:协议头部最小仅2字节,网络传输开销极小,适合在窄带网络(如NB-IoT)中使用。
  • 低功耗:使用异步传输机制和较小的数据包传输,使得设备在通信过程中的能耗更低。
  • 高可靠性:提供三种服务质量(QoS)级别,确保消息必达。
  • 灵活扩展:通过主题和通配符机制,设备可以灵活订阅和发布消息,支持大规模设备接入。
  • 适应不稳定网络:心跳机制和会话恢复功能,确保设备在断网后能够快速恢复连接并获取未读消息。

MQTT协议的应用领域

MQTT协议广泛应用于物联网(IoT)设备、传感器网络和分布式系统中。例如,在智能家居系统中,各种智能设备可以通过MQTT协议与中央控制系统通信,实现设备之间的协同工作。此外,MQTT也适用于移动消息推送领域,如Android手机客户端与服务器端的消息推送。

下面是一个使用C++和Paho MQTT客户端库实现MQTT通信的简单示例。这个示例展示了如何连接到MQTT代理、发布消息和订阅主题。

示例代码

#include <iostream>
#include <mqtt/client.h>
#include <mqtt/async_client.h>// MQTT连接选项
const char* ADDRESS = "tcp://broker.hivemq.com:1883"; // 公共MQTT代理
const char* CLIENT_ID = "cpp_client";
const char* TOPIC = "test/topic";
const int QOS = 1;// MQTT回调类
class Callback : public virtual mqtt::callback {
public:void connection_lost(const std::string& cause) override {std::cout << "\nConnection lost, cause: " << cause << std::endl;}void message_arrived(mqtt::const_message_ptr msg) override {std::cout << "Message arrived: " << msg->get_topic() << " - " << msg->get_payload_str() << std::endl;}void delivery_complete(uint64_t token) override {std::cout << "Delivery complete for token: " << token << std::endl;}
};int main() {// 创建MQTT客户端mqtt::async_client client(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);try {std::cout << "Connecting to MQTT broker..." << std::endl;client.connect(conn_opts)->wait();std::cout << "Connected to MQTT broker." << std::endl;// 订阅主题std::cout << "Subscribing to topic: " << TOPIC << std::endl;client.subscribe(TOPIC, QOS)->wait();// 发布消息std::string payload = "Hello, MQTT from C++!";std::cout << "Publishing message: " << payload << std::endl;client.publish(TOPIC, payload.c_str(), payload.size(), QOS)->wait();// 等待几秒钟以接收可能的消息std::cout << "Waiting for messages..." << std::endl;std::this_thread::sleep_for(std::chrono::seconds(5));// 断开连接std::cout << "Disconnecting from MQTT broker..." << std::endl;client.disconnect()->wait();std::cout << "Disconnected from MQTT broker." << std::endl;} catch (const mqtt::exception& e) {std::cerr << "Error: " << e.what() << std::endl;return 1;}return 0;
}

代码说明

  1. 包含头文件

    • mqtt/client.hmqtt/async_client.h 是Paho MQTT客户端库的头文件。
  2. 连接选项

    • ADDRESS 是MQTT代理的地址,这里使用的是公共代理 broker.hivemq.com
    • CLIENT_ID 是客户端的唯一标识符。
    • TOPIC 是消息的主题。
    • QOS 是消息的服务质量级别。
  3. 回调类

    • Callback 类继承自 mqtt::callback,用于处理连接丢失、消息到达和消息交付完成等事件。
  4. 主函数

    • 创建 mqtt::async_client 实例。
    • 设置回调。
    • 连接到MQTT代理。
    • 订阅主题。
    • 发布消息。
    • 等待几秒钟以接收可能的消息。
    • 断开连接。

编译和运行

  1. 安装Paho MQTT客户端库

    • 在Ubuntu上可以使用以下命令安装:
      sudo apt-get install libmqttclient-dev
      
  2. 编译代码

    g++ -std=c++11 mqtt_example.cpp -o mqtt_example -lpaho-mqtt3as
    
  3. 运行程序

    ./mqtt_example
    

输出示例

Connecting to MQTT broker...
Connected to MQTT broker.
Subscribing to topic: test/topic
Publishing message: Hello, MQTT from C++!
Waiting for messages...
Message arrived: test/topic - Hello, MQTT from C++!
Delivery complete for token: 1
Disconnecting from MQTT broker...
Disconnected from MQTT broker.

这个示例展示了如何使用C++和Paho MQTT客户端库实现基本的MQTT通信。你可以根据需要扩展功能,例如处理更多的回调事件、增加错误处理逻辑等。


文章转载自:

http://1NOQYWxn.gwymL.cn
http://n8MwVGw8.gwymL.cn
http://T7I622YE.gwymL.cn
http://Y1gFiOKu.gwymL.cn
http://BrvTPzEw.gwymL.cn
http://tHgQvFB9.gwymL.cn
http://Y50Oh6oR.gwymL.cn
http://G5giBnQJ.gwymL.cn
http://TTKElr9G.gwymL.cn
http://BbNzOVlq.gwymL.cn
http://60zOYkQx.gwymL.cn
http://gvYXTmuV.gwymL.cn
http://PE37Qt4o.gwymL.cn
http://o2HTwCqX.gwymL.cn
http://mgEPBBiw.gwymL.cn
http://3sG9eYHM.gwymL.cn
http://2Gunfiwn.gwymL.cn
http://ou10qUAN.gwymL.cn
http://puP5oi0V.gwymL.cn
http://K4w1QOth.gwymL.cn
http://LtWHUapF.gwymL.cn
http://gDU1WSbb.gwymL.cn
http://le7MsNdu.gwymL.cn
http://O4Hm7Az3.gwymL.cn
http://1QmK3ElT.gwymL.cn
http://zk3aFBqk.gwymL.cn
http://5P2D3rVJ.gwymL.cn
http://ylwAnUm0.gwymL.cn
http://Z4tEyEkH.gwymL.cn
http://fU8fDJDk.gwymL.cn
http://www.dtcms.com/wzjs/675893.html

相关文章:

  • 网站建设可上传视频的门户网站建设关键点
  • 网站的内部推广的方法l凉州区城乡建设部网站首页
  • 网站设计的国际专业流程景观设计师如何做网站
  • 网站的栏目关键词wordpress多格式视频播放插件
  • 合肥公司网站建设cms开发
  • 福州企业网站维护价格低如何增加网站访问量
  • 网站在线压缩义乌厂家直接免费外发手工活
  • 如何在vs做网站接口网站开发
  • 什么网站能接单做网站网站添加在线支付功能
  • php做动漫网站山东桓台建设招投标网站
  • 小型教育网站的开发与建设系统做外贸营销网站销售咋样
  • 做的好的网站营销微信公众号做网站如何赚流量钱
  • 怎么做自己的优惠券网站企业站seo价格
  • 优化服务是什么意思搜索引擎排名优化seo课后题
  • 网站 需求 文档网站子站建设自查报告
  • 用户等待网站速度上海网站建设选缘魁
  • .net网站开发环境南京江北新区最新规划
  • 靖州网站建设河南电力建设工程公司网站
  • 深喉咙企业网站wordpress读取文件内容
  • 手机 登录asp网站手机交互设计网站
  • 社交网站推广怎么做wordpress博客主题哪个好
  • 医院网站html模板外语不精通可以做国外网站吗
  • 宁夏建设网站柳州建网站
  • 旅游网站建设标书自己制作网站做外贸赚钱吗
  • 社区微网站建设方案ppt模板淘宝做网站的公司
  • 网站建设中的发布维护包括wordpress 去掉主题版权
  • 如何快速做网站关键词做网站制作一般多少钱
  • 网站建设好了怎么弄手机网站建设网页开发语言有哪几种
  • 海口建站价格个人购物网站 怎么建
  • 众安保险网站洛阳恢复客运最新通知