MQTT服务器--Mosquitto在Window10上安装

本文介绍MQTT协议及其在物联网和移动设备中的应用。详细讲解了Eclipse Mosquitto作为开源MQTT代理的安装过程,包括在Windows 10环境下的下载、安装步骤,以及如何启动和配置Mosquitto服务。此外,还提供了mosquitto_pub和mosquitto_sub命令的详细使用指南,涵盖各种参数和选项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Mosquitto

MQTT,全称Message Queuing Telemetry Transport,即“消息队列遥测传输”,MQTT协议提供了使用发布/订阅模型执行消息传递的轻量级方法,它工作在 TCP/IP协议族上,这使其适用于物联网消息传递(例如,低功率传感器)或移动设备(例如电话,嵌入式计算机或微控制器)。

支持MQTT的服务器中间件有EMQTT、Mosquitto、Apollo,其中 Eclipse Mosquitto 是实现MQTT协议版本5.0、3.1.1和3.1的开源消息代理(经EPL / EDL许可),本文讲述如何在win10环境下安装Mosquitto。

二、下载

访问Mosquitto官网即可下载:官网链接
在这里插入图片描述

三、安装

在这里插入图片描述
在这里插入图片描述
注意:安装路径中不可以出现中文或者空格,默认的路径中存在空格,所以不可以用,需要自己修改一个合适的路径:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、启动服务

安装完成之后,服务还没有启动,需要手动启动服务,该服务默认监听1883端口:
在这里插入图片描述

五、使用

mosquitto_pub(发布)的用法

mosquitto_pub [-d] [-h hostname] [-i client_id] [-I client id prefix] [-p port number] [-q message QoS] [--quiet] [-r] { -f file | -l | -m message | -n | -s} [-u username [-P password] ] [ --will-topic topic [--will-payload payload] [--will-qos qos] [--will-retain] ] -t message-topic

选项:
-d, –debug :开启debug选项
-f, –file:把一个文件的内容做为消息的内容发送。经测试,支持txt文件,不支持doc等其他形式文件。
-h, –host:说明所连接到的域名,默认是localhost
-i, –id:客户端的ID号,如果没有指定,默认是mosquitto_pub_加上客户端的进程id,不能和–id_prefix同时使用。
-I, –id-prefix :指定客户端ID的前缀,与客户端的进程ID连接组成客户端的ID,不能和–id同时使用。
-l, –stdin-line:从总段读取输入发送消息,一行为一条消息,空白行不会被发送。
-m, –message:从命令行发送一条消息,-m后面跟发送的消息内容。
-n, –null-message:发送一条空消息。
-p, –port:连接的端口号,默认是1883.
-P, –pw:指定密码用于代理认证,使用此选项时必须有有效的用户名。
-q, –qos:指定消息的服务质量,可以为0,1,2,默认是0.
–quiet:如果指定该选项,则不会有任何错误被打印,当然,这排除了无效的用户输入所引起的错误消息。
-r, –retain:如果指定该选项,该条消息将被保留做为最后一条收到的消息。下一个订阅消息者将能至少收到该条消息。
-s, –stdin-file:从标准输入接收传输的消息内容,所有输入做为一条消息发送。
-t, –topic:指定消息所发布到哪个主题。
-u, –username:指定用户名用于代理认证。
–will-payload:如果指定该选项,则万一客户端意外和代理服务器断开,则该消息将被保留在服务端并发送出去,该选项必须同时用–will-topic指定主题。
–will-qos:指定Will的服务质量,默认是0.必须和选项 –will-topic同时使用.
–will-retain:如果指定该选项,则万一客户端意外断开,已被发送的消息将被当做retained消息。必须和选项 –will-topic同时使用.
–will-topic:指定客户端意外断开时,Will消息发送到的主题。


mosquitto_sub(订阅)的用法

mosquitto_sub [-c] [-d] [-h hostname] [-i client_id] [-I client id prefix] [-k keepalive time] [-p port number] [-q message QoS] [--quiet] [-v] [ -u username [-Ppassword] ] [ --will-topic topic [--will-payload payload] [--will-qos qos] [--will-retain] ] -t message topic ...  

命令:mosquitto_sub 订阅到主题,接收到消息时打印
选项:
-c, –disable-clean-session:禁止’clean session’选项,即如果客户端断开连接,这个订阅仍然保留来接收随后到的QoS为1和2的消息,当改客户端重新连接之后,它将接收到已排在队列中的消息。建议使用此选项时,客户端id选项设为–id
-d, –debug:开启debug选项
-h, –host:说明所连接到的域名,默认是localhost
-i, –id:客户端的ID号,如果没有指定,默认是mosquitto_pub_加上客户端的进程id,不能和–id_prefix同时使用。
-I, –id-prefix:指定客户端ID的前缀,与客户端的进程ID连接组成客户端的ID,不能喝–id同时使用。
-k, –keepalive:给代理发送PING命令(目的在于告知代理该客户端连接保持且在正常工作)的间隔时间,默认是60s
-p, –port:说明客户端连接到的端口,默认是1883
-P, –pw:指定密码用于代理认证,使用此选项时必须有有效的用户名。
-q, –qos:指定消息的服务质量,可以为0,1,2,默认是0.
–quiet:如果指定该选项,则不会有任何错误被打印,当然,这排除了无效的用户输入所引起的错误消息。
-t, –topic:指定订阅的消息主题,允许同时订阅到多个主题
-u, –username:指定用户名用于代理认证。
-v, –verbose:冗长地打印收到的消息。若指定该选项,打印消息时前面会打印主题名——“主题 消息内容”,否则,只打印消息内容
–will-payload:如果指定该选项,则万一客户端意外和代理服务器断开,则该消息将被保留在服务端并发送出去,该选项必须同时用–will-topic指定主题。
–will-qos:指定Will的服务质量,默认是0.必须和选项 –will-topic同时使用.
–will-retain:如果指定该选项,则万一客户端意外断开,已被发送的消息将被当做retained消息。必须和选项 –will-topic同时使用.
–will-topic:指定客户端意外断开时,Will消息发送到的主题。


报文种类
1.连接请求(CONNECT)

当一个从客户端到服务器的TCP/IP套接字连接被建立时,必须用一个连接流来创建一个协议级别的会话。

2.连接请求确认(CONNECTACK)

连接请求确认报文(CONNECTACK)是服务器发给客户端,用以确认客户端的连接请求

3.发布报文(PUBLISH)

客户端发布报文到服务器端,用来提供给有着不同需求的订阅者们。每个发布的报文都有一个主题,这是一个分层的命名空间,他定义了报文来源分类,方便订阅者订阅他们需要的主题。订阅者们可以注册自己的需要的报文类别。

4.发布确认报文(PUBACK)

发布确认报文(PUBACK)是对服务质量级别为1的发布报文的应答。他可以是服务器对发布报文的客户端的报文确认,也可以是报文订阅者对发布报文的服务器的应答。

5.发布确认报文(PUBREC)

PUBREC报文是对服务质量级别为2的发布报文的应答。这是服务质量级别为2的协议流的第二个报文。PUBREC是由服务器端对发布报文的客户端的应答,或者是报文订阅者对发布报文的服务器的应答。

6.发布确认报文(PUBREL)

PUBREL是报文发布者对来自服务器的PUBREC报文的确认,或者是服务器对来自报文订阅者的PUBREC报文的确认。它是服务质量级别为2的协议流的第三个报文。

7.确定发布完成(PUBCOMP)

PUBCOMP报文是服务器对报文发布者的PUBREL报文的应答,或者是报文订阅者对服务器的PUBREL报文的应答。它是服务质量级别为2的协议流的第四个也是最后一个报文。

8.订阅命名的主题(SUBSCRIBE)

订阅报文(SUBSCRIBE)允许一个客户端在服务器上注册一个或多个感兴趣的主题名字。发布给这些主题的报文作为发布报文从服务器端交付给客户端。订阅报文也描述了订阅者想要收到的发布报文的服务质量等级。

9.订阅报文确认(SUBACK)

当服务器收到客户端发来的订阅报文时,将发送订阅报文的确认报文给客户端。一个这样的确认报文包含一列被授予的服务质量等级。被授予的服务质量等级次序和对应的订阅报文中的主题名称的次序相符。

10.退订命名的主题(UNSUBSCRIBE)

退订主题的报文是从客户端发往服务器端,用以退订命名的主题。

11.退订确认(UNSUBACK)

退订确认报文是从服务器发往客户端,用以确认客户端发来的退订请求报文。

12.Ping请求(PINGREQ)

Ping请求报文是从连接的客户端发往服务器端,用来询问服务器端是否还存在。

13.Ping应答(PINGRESP)

Ping应答报文是从服务器端发往Ping请求的客户端,对客户端的Ping请求进行确认。

14.断开通知(DISCONNECT)

断开通知报文是从客户端发往服务器端用来指明将要关闭它的TCP/IP连接,他允许彻底地断开,而非只是下线。如果客户端已经和干净会话标志集联系,那么所有先前关于客户端维护的信息将被丢弃。一个服务器在收到断开报文之后,不能依赖客户端关闭TCP/IP连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贝勒里恩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值