MQTT服务器Mosquitto的使用及配置过程中的一些问题和解决方法

本文介绍了如何下载和配置MQTT服务器Mosquitto,包括解决开启服务时遇到的localonlymode问题、防火墙导致的连接问题以及客户端授权。详细讲解了如何注册和管理用户名密码,并提供了启动和停止服务的命令,以及客户端订阅和发布消息的方法。
摘要由CSDN通过智能技术生成

MQTT服务器Mosquitto的使用及配置过程中的一些问题和解决方法

原文链接:https://blog.csdn.net/qq_43370609/article/details/113769486

最近在学习MQTT协议及MQTT协议的模糊测试,避免不了要搭建MQTT服务器,网上有很多MQTT服务器的介绍,这里选用了Mosquitto作为MQTT服务器。在搭建Mosquitto服务器的过程中遇到了一些问题,在搜寻资料以后发现有些问题的解决方法没有整合,所以打算写篇文章整合一下。

Mosquitto下载

Mosquittio下载的网址还是贴一下吧,虽说百度也查得到。
链接: https://mosquitto.org/download/.
有多种操作系统的资源下载,这里选择的是windows64位系统的版本。

Mosquitto配置过程中的一些问题和解决方案
下载安装了Mosquitto以后,到Mosquitto文件所在的文件夹进入命令行窗口就可以使用了。

开启Mosquitto服务以后出现local only mode 的情况
这里需要配置一下mosquitto.conf文件。打开这个文件,找到listener的配置,将#删除再在listener后面加一个固定的端口1883。这个文件里的listener可能比较多,找到#listener port-number [ip address/host name/unix socket path]这句后面的那个listener。
然后找到allow_anonymous false,将false修改为true。
然后启动Mosquitto服务的时候使用配置文件启动。
在这里插入图片描述

这样就没有出现local only mode 的情况了,如果出现local only mode ,则MQTT服务就只能在一台主机上进行,别的客户端想要连到MQTT服务器进行MQTT通信是不行的。

连接失败或者目标计算机积极拒绝连接
可能是防火墙的问题。需要将服务器端和客户端的防火墙关闭,或者配置一下防火墙。

Connection Refused:not authorised
Mosquitto服务器要进行MQTT通信的话,客户端订阅需要加上用户名和密码。而客户端的用户名和密码需要在服务器端上注册。Mosquitto服务器注册用户名和密码是通过mosquittto_passwd修改pwfile.example文件进行的。这里网上的资料也有,有个问题就是注册以后还需要到mosquitto.conf文件中加上一行password_fle 路径\pwfile.example,不然通过这个配置文件启动的时候,Mosquitto服务器不知道客户端有没有注册过。注意修改之后要多一行空行。
之后客户端就可以通过mosquitto_sub -t topic -h Mosquitto服务器端的IP地址 -u 用户名 -P 密码 进行订阅MQTT服务。客户端订阅MQTT服务之前,服务器端的Mosquitto服务需要打开。

Mosquitto的使用

Mosquitto启动服务

mosquitto -v
mosquitto -c 配置文件 -v

Mosquitto注册用户名和密码

mosquitto_passwd -H sha512 -c -b pwfile.example -u username -P password
第一次注册,需要用-c创建一个新的密码文件,或者说可以用-c覆盖掉原先的密码文件。
mosquitto_passwd -H sha512 -b pwfile.example username password
添加新的用户名和密码。
如果不使用用户密码登录mosquitto服务器,则需要在mosquitto.conf文件最后加上一条allow_anonymous true。

Mosquitto订阅与发布消息

mosquitto_sub -t topic -h mosquitto服务器所在的IP地址 -u 订阅端用户名 -P 订阅端密码
订阅消息。
mosquitto_pub -t topic -h mosquitto服务器所在的IP地址 -u 发布端用户名 -P 发布端密码 -m 发布端要发布的消息。
发布消息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值