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

MQTT学习笔记——MQTT协议体验 Mosquitto安装和使用

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

MQTT学习笔记——MQTT协议体验 Mosquitto安装和使用 标签: MQTT物联网Mosquitto 2014-09-13 16:30 27023人阅读 评论(15) 收藏 举报 分类: 物联网学习笔记(37)
版权声明:本文为博主原创文章,未经博主允许不得转载。 0 前言 MQTT是IBM开发的一个即时通讯协议。MQTT是面向M2M和物联网的连接协议,采用轻量级发布和订阅消息传输机制。Mosquitto是一款实现了 MQTT v3.1 协议的开源消息代理软件,提供轻量级的,支持发布/订阅的的消息推送模式,使设备对设备之间的短消息通信简单易用。 若初次接触MQTT协议,可先理解以下概念: 【MQTT协议特点】——相比于RESTful架构的物联网系统,MQTT协议借助消息推送功能,可以更好地实现远程控制。 【MQTT协议角色】——在RESTful架构的物联网系统,包含两个角色客户端和服务器端,而在MQTT协议中包括发布者,代理器(服务器)和订阅者。 【MQTT协议消息】——MQTT中的消息可理解为发布者和订阅者交换的内容(负载),这些消息包含具体的内容,可以被订阅者使用。 【MQTT协议主题】——MQTT中的主题可理解为相同类型或相似类型的消息集合。

1 安装和使用注意点 1.1 安装 截止2015年12月,最新版本为mosquitto-1.4.5

下载源代码包

wget http://mosquitto.org/files/source/mosquitto-1.4.5.tar.gz

解压

tar zxfv mosquitto-1.4.5.tar.gz

进入目录

cd mosquitto-1.4.5

编译

make

安装

sudo make install

1.2 安装注意点 【1】编译找不到openssl/ssl.h 【解决方法】——安装openssl sudo apt-get install libssl-dev 【2】编译过程找不到ares.h sudo apt-get install libc-ares-dev 【3】编译过程找不到uuid/uuid.h sudo apt-get install uuid-dev 【4】使用过程中找不到libmosquitto.so.1 error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory 【解决方法】——修改libmosquitto.so位置

创建链接

sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1

更新动态链接库

sudo ldconfig 【5】make: g++:命令未找到
【解决方法】 安装g++编译器 sudo apt-get install g++

2 简单测试 一个完整的MQTT示例包括一个代理器,一个发布者和一个订阅者。测试分为以下几个步骤: 【1】启动服务mosquitto。 【2】订阅者通过mosquitto_sub订阅指定主题的消息。 【3】发布者通过mosquitto_pub发布指定主题的消息。 【4】代理服务器把该主题的消息推送到订阅者。

【测试说明】 测试环境:ubuntu 14.04 虚拟机 在本例中,发布者、代理和订阅者均为localhsot,但是在实际的情况下三种并不是同一个设备,在mosquitto中可通过-h(--host)设置主机名称(hostname)。为了实现这个简单的测试案例,需要在linux中打开三个控制台,分别代表代理服务器、发布者和订阅者。

图1 示例 2.1 启动代理服务 mosquitto -v 【-v】打印更多的调试信息

2.2 订阅主题 mosquitto_sub -v -t sensor 【-t】指定主题,此处为sensor 【-v】打印更多的调试信息

2.3 发布内容 mosquitto_pub -t sensor -m 12 【-t】指定主题 【-m】指定消息内容

2.4 运行结果 当发布者推送消息之后,订阅者获得以下内容 sensor 12 而代理服务器控制台中会出现——连接、消息发布和心跳等调试信息。通过代理服务器的调试输出可以对MQTT协议的相关过程有所了解。

图2 代理服务器调试输出

3 总结 通过Mosquitto实现MQTT协议代理器(服务器),为今后的MQTT协议应用做准备。本文并没有分析MQTT协议的种种细节,但是希望通过一个简单的例子把MQTT协议“使用起来”,通过使用过程来理解MQTT协议,在过程中关注细节收集疑问,再阅读MQTT协议具体内容,这样学习起来就不至于枯燥乏味(即使MQTT协议只有40多页,但是初次阅读我还是没能理解其内涵,只能怪自己智商太低,学术不精。)

转载于:https://my.oschina.net/u/1176559/blog/599135

相关文章:

  • 遇到的Cocos2dx问题
  • Hello world开始复习
  • [ffmpeg] 定制滤波器
  • IOS的处理touch事件处理(按照手指的移动移动一个圆,开发环境用的ios7,storyboard)...
  • DataTable转实体类
  • [Java][Android][Process] ProcessBuilder与Runtime差别
  • NET Core微服务之路:自己动手实现Rpc服务框架,基于DotEasy.Rpc服务框架的介绍和集成...
  • 服务器虚拟化的十大谎言
  • cacti找不到网卡的解决方法
  • Java并发3:线程
  • 技术部门怎么年终考核最合理?
  • python机器学习实战(二)
  • 生成验证码
  • 【Spring Boot】19.集成消息
  • Visio2010建立ER图并直接导出为SQL语句
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • 30天自制操作系统-2
  • CSS 专业技巧
  • Hexo+码云+git快速搭建免费的静态Blog
  • js如何打印object对象
  • js算法-归并排序(merge_sort)
  • node 版本过低
  • React-生命周期杂记
  • React组件设计模式(一)
  • Sublime text 3 3103 注册码
  • 闭包,sync使用细节
  • 测试开发系类之接口自动化测试
  • 翻译:Hystrix - How To Use
  • 给第三方使用接口的 URL 签名实现
  • 来,膜拜下android roadmap,强大的执行力
  • 聊聊hikari连接池的leakDetectionThreshold
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 学习JavaScript数据结构与算法 — 树
  • 用简单代码看卷积组块发展
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​LeetCode解法汇总518. 零钱兑换 II
  • #pragma once与条件编译
  • (3)(3.5) 遥测无线电区域条例
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (十) 初识 Docker file
  • (一)u-boot-nand.bin的下载
  • (一一四)第九章编程练习
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)jQuery 基础
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • .NET gRPC 和RESTful简单对比
  • .Net MVC + EF搭建学生管理系统
  • .net Signalr 使用笔记
  • .NET框架设计—常被忽视的C#设计技巧
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • .net与java建立WebService再互相调用
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?