c++ mqtt客户端_MQTT详解及百度物接入连接手机测试(含源码) 秦子帅

MQTT简介

MQTT定义

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和制动器(比如通过Twitter让房屋联网)的通信协议。

MQTT特点

MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,它具有以下主要的几项特性:

1.使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合;

2.对负载内容屏蔽的消息传输;

3.使用 TCP/IP 提供网络连接;

4.有三种消息发布服务质量:

  • “至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
  • “至少一次”,确保消息到达,但消息重复可能会发生。
  • “只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。

5.小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量;

6.使用 Last Will 和 Testament 特性通知有关各方客户端异常中断的机制;

MQTT特征原理

1ab0a1ac248474af3e2dd40bbeefd570.png

image

实现MQTT协议需要:客户端和服务器端

MQTT协议有三种身份:发布者(Pushlish)、代理(Broker)、订阅者(Subscribe)

MQTT的消息分为:主题(Topic)和负载(payload)两部分

Topic,可以理解为消息的类型,订阅者Subscribe之后,就会收到该主题的消息内容(payload)。

payload,可以理解为消息的内容,是指订阅者具体的使用内容

消息类型:

  • CONNECT:客户端连接到MQTT代理
  • CONNACK:连接确认
  • PUBLISH:新发布消息
  • PUBACK:新发布消息确认,是QoS 1给PUBLISH消息的回复
  • PUBREC:QoS 2消息流的第一部分,表示消息发布已记录
  • PUBREL:QoS 2消息流的第二部分,表示消息发布已释放
  • PUBCOMP:QoS 2消息流的第三部分,表示消息发布完成
  • SUBSCRIBE:客户端订阅某个主题
  • SUBACK:对于SUBSCRIBE消息的确认
  • UNSUBSCRIBE:客户端终止订阅的消息
  • UNSUBACK:对于UNSUBSCRIBE消息的确认
  • PINGREQ:心跳
  • PINGRESP:确认心跳
  • DISCONNECT:客户端终止连接前优雅地通知MQTT代理

MQTT应用

通过MQTT协议,目前已经扩展出了数十个MQTT服务器端程序,可以通过PHP,JAVA,Python,C,C#等系统语言来向MQTT发送相关消息。

此外,国内很多企业都广泛使用MQTT作为Android手机客户端与服务器端推送消息的协议。其中Sohu,Cmstop手机客户端中均有使用到MQTT作为消息推送消息。据Cmstop主要负责消息推送的高级研发工程师李文凯称,随着移动互联网的发展,MQTT由于开放源代码,耗电量小等特点,将会在移动消息推送领域会有更多的贡献,在物联网领域,传感器与服务器的通信,信息的收集,MQTT都可以作为考虑的方案之一。在未来MQTT会进入到我们生活的各各方面。

百度物接入loT及MQTT测试

配置

1.注册百度云账号,打开物接入界面:

7ff4ea94ffecc80d1f3ceb6b141f6d11.png

image

2.在管理控制平台创建:

593542d1f846e5a27ced70c29db4291a.png

image

438690295640e6e8532cf3df5790e99b.png

image

3.点击刚才创建的实例名称,并创建设备:

384f3d81d030fcabfc6305c392f92719.png

image

9ca4ca4c30285db4ee813205010600b8.png

image

4.填写身份、策略、主题等信息

需要注意的是Topic和生成的密钥一定要记住,如果密钥丢了的话只能去重置密钥了。

b1db2067499312d73915563c75615cba.png

image

64d3301c2c754ea115617b273f11b296.png

image

基本配置就是这些了。

MQTT连接测试

1.点击连接测试:

a869fc248d4c80db61d9593c05e87b07.png

image

2.填写刚才生成密钥,以及用户名称,然后点击Connect

89fa1caf1de84510993ad16d03bce34b.png

image

3.连接之后开始测试,填写一下你刚才设置的主题,比如我设置的主题是qzsservice,步骤如下:

ec139422d6ef099eb50492e0560328a3.png

image

b33b4e3909cc431c65e50218aacab7da.png

image

9f02d51fb72752945e5a12d1303e1433.png

image

发送后底下就会显示Messages信息了,说明测试成功!

百度物接入服务器与手机连接测试

上面我们已经讲完了百度物接入怎么创建实例+连接测试了,下面讲一下连接测试发送消息怎么与手机程序相连。也就是服务器发送一条消息,手机程序接收。:

首先需要引入两个包:

253b1b9bd0c11c74aef2fe64ff96f85b.png

image

然后就是通过一系列的操作:

  • 创建MQTT连接 createconnect
  • 订阅主题subscribe

代码我就不展示了,文末会贴出源码下载的地址

测试步骤:

1.完成第二部分的内容,记下生成的topic,server_utl,用户名,密钥

2.在手机程序Constants加入这些数据

3.运行程序,输入订阅的主题,如果显示“订阅主题成功”说明成功了,此时再MQTT服务器上发送一条消息,观察log,会显示收到的消息。

源码获取:加我的WX:lengquele5311

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503820.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

antix linux安装教程,antiX 19.1 发布,轻量级的桌面Linux发行版

antiX是一种轻量级的桌面Linux发行版,以IceWM作为默认窗口管理器,已升级到版本19.1。尽管主要是一个错误修复版本,但新版本还将IceWM更新到版本1.6.3:提供了antiX-19.1错误修复/升级ISO映像。所有新ISO映像都是antiX 19 SysVInit系…

electron增加导航按钮_Electron发布6.0 Released版本

简介在第5版发布仅3个月后,流行的基于JavaScript的跨平台桌面应用程序构建平台达到了第6版,并使用了Chromium 76,Node 12.4和V8 7.6。6.0.0发行说明突破性变化升级到Chromium 76.0.3809.88,Node.js 12.4.0和V87.6.303.22修复了net…

linux u盘刻录软件,Deepin Linux下刻录Windows安装U盘:WoeUSB的介绍和应用

WoeUSB是用于GNULinux的Microsoft Windows USB安装介质工具,用它可以在Deepin等Linux系统下刻录Windows安装U盘。介绍1、特征:支持旧版PC/UEFI引导。支持FAT32和NTFS文件系统。支持使用物理安装光盘或磁盘映像作为源。2、支持的Windows安装映像&#xff…

曲线积分与曲面积分总结_高数下册||知识点总结

知识点总结— 期末来临,你准备好了吗 —高等数学学下一转眼又一学期即将结束期末考试也悄悄地临近了大家都准备好了吗我们为大家带来了高等数学(下)的复习资料来吧,展示!1向量代数与空间解析几何首先我们看到的是向量代数与空间解析几何的重点…

java解析excel文件_1.3.1 python解析excel格式文件

Excel表格Microsoft Excel是Microsoft为使用Windows和Apple Macintosh操作系统的电脑编写的一款电子表格软件。excel文档的基本定义工作薄(workbook)工作表(sheet)活动表(active sheet)行(row): 1,2,3,4,5,6……..列(column): A,B,C,D……..单元格(cell): B1, C1excel文件格式P…

c++ 快速排序_常用排序算法之快速排序

前天给大家分享了归并排序,但是它不是原地排序算法,需要消耗额外的内存空间,今天给大家分享的是江湖无人不知无人不晓的"快排"--快速排序。快排是小生接触开发学会的第一个排序算法快速排序原理快排也用到了分治思想。快排的核心思…

k8s ubuntu cni_手把手教你使用RKE快速部署K8S集群并部署Rancher HA

作者:杨紫熹原文链接:https://fs.tn/post/PmaL-uIiQ/RKE全称为Rancher Kubernetes Engine,是一款经过CNCF认证的开源Kubernetes发行版,可以在Docker容器内部运行。它解决了Kubernetes社区中最常见的问题——安装十分复杂。借助RKE…

linux du -sh 脚本,Linux之shell脚本(2)

Linux之shell脚本(2)一、printf命令:printf是一个把从标准输入的字符按照你所要求的格式输出到标准输出即屏幕的命令.在很多时候,我们可能需要将自己的数据给他格式化输出的。1.格式化输出。(print format)2.命令格式:printf打印格式实际内容…

python异常值删除_python数据清洗中,是如何识别和处理异常值的?

异常值处理是pythonshujuqingxi/ stylecolor:#000;font-size:14px;>python数据清洗中重要的步骤,虽然异常值出现频率比较低,但是如果置之不理的话,还是会对实际项目的分析造成偏差,所以今天小编就跟大家分享pythonshujuqingxi/…

啊哈c语言答案1.3,啊哈C语言编程-第2课-让计算机开口说话

为什么会有计算机的出现呢?我们伟大的人类,发明的每一样东西都是为了帮助我们改善生活。计算机同样是用来帮助我们的工具。想一想,假如你现在希望让计算机帮助你做一件事情,你首先需要做什么?是不是要先与计算机进行沟…

用html5做一个简单网页_用新款ws2812灯带做一个简单的窗花

本文转自:DF创客社区-未经许可不可转载原文链接(附件请于原文下方下载):用新款ws2812灯带做一个简单的窗花-创意生活论坛-DF创客社区​mc.dfrobot.com.cn作者:屌丝王小明很高兴提前拿到了DF即将上架的新品——ws2812灯…

c语言锁屏密码程序,求一个VB锁屏程序的源文件

满意答案nan67182014.07.08采纳率:53% 等级:12已帮助:8369人我原来写的一个缩屏的程序,后来没用,当时只是为了测试透明窗体的.代码给你参考下。功能差一个禁用任务管理器的功能Private Declare Function GetWindowL…

抗侧力构件弹性位移如何计算_说一说现在很火的装配式建筑怎么计算?

装配整体式剪力墙结构体系,其主要预制构件包括承重墙(预制剪力墙)、非承重墙(外填充墙、内隔墙等)、预制楼梯(预制楼梯梯段,端部伸出连接钢筋,伸入叠合平台板,通过叠合现浇形成整体楼梯)、预制阳台板(根据建筑要求,整体…

微软私有云解决方案_微软发布电信云平台 ,互联网巨头争夺5G网络商机

微软发布电信云平台 ,互联网巨头争夺5G网络商机微软公司周一发布了全新的云平台,能够帮助电信运营商更快地构建5G网络,降低成本并向企业客户出售定制服务。这一5G的新平台将在微软云Azure上运行,微软表示使用该平台将降低基础架构…

fanuc机器人编程手册_是谁需要G代码编程机器人?

用G代码编程机器人是一个5,6年前就碰到过的一个概念。当时就有点困惑,不过没有细究为何提出这样的想法。这个问题一直搁置很久也没有想起来主动去了解,去和同行去交流。今天在翻阅西门子自动化产品手册时,看到SINUMERIK产品介绍后…

java各个平台订单动态对接_平台订单丨全国各地最新采购、代加工订单,免费联系对接...

寻求:地铁闸机加工件定制加工需要两种闸机,一种扇门,一种旋转扇门,两必须都按照图纸加工,请仔细审核图纸,欢迎有实力的友商前来洽谈,不符勿扰,谢谢!求购:镀锌…

零基础入门c语言免费教程,C语言零基础急速入门免费教程不定期更新

很多粉丝问我陈老师为什么你会教c语言和java语言?因为名字中”陈“字的汉语拼音中“chen””陈“,和“c”语言是同一个首字母“c”,所以我教“c”语言。又因为同学、学生、粉丝、朋友、同事、亲人们叫我杰哥,汉语拼音中的”jie“&…

python单词什么意思_“逐字逐句”是什么意思?语法在Python中意味着什么?

I see the following script snippet from the gensim tutorial page. Whats the syntax of word for word in below Python script? >> texts [[word for word in document.lower().split() if word not in stoplist] >> for document in documents] 解决方案 T…

平台型时间信号强度曲线_哥测的不是BET,是氮气等温吸脱附曲线

平时经常会说去测个BET,看看材料比表面积多大,孔径分布如何,其实我们测试的并不是BET,而是氮气等温吸脱附曲线,测试得到的数据是氮气等温吸脱附曲线,比表面积、孔径分布都是通过公式计算得到的。所以本文旨…

python整数类型在每一台计算机上的取值范围是一样的_人工智能第一章:Python语言基础...

1 Python简介 Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。 1.1 起源 Python的作者是著名的…