常用命令
场景 | 命令 | 分析 |
---|---|---|
启动代理服务 | mosquitto -v | 【-v】打印更多的调试信息 |
订阅主题 | mosquitto_sub -v -t sensor | 【-t】指定主题,此处为sensor 【-v】打印更多的调试信息 |
发布内容 | mosquitto_pub -t sensor -m 12 | 【-t】指定主题【-m】指定消息内容 |
配置账户密码 | Mosquitto服务器的配置文件为/etc/mosquitto/mosquitto.conf,关于用户认证的方式和读取的配置都在这个文件中进行配置。 | |
配置文件设置 | allow_anonymous false | 不允许匿名用户 |
配置用户密码文件 | password_file /etc/mosquitto/pwfile | |
添加用户信息 | #mosquitto_passwd -c /etc/mosquitto/pwfile chisj | 添加用户’chisj’密码’chisj‘ |
重启Mosquitto | 1.通过Ctrl+C关闭mosquitto 2.mosquitto-c /etc/mosquitto/mosquitto.conf | |
(订阅端)客户端启动 | mosquitto_sub -h ip地址 -t mtopic | |
(订阅端)客户端(用户名,密码)启动 | mosquitto_pub -h 192.168.1.100 -t mtopic -u chisj -P chisj -m “test” | |
(发布者)客户端启动 | mosquitto_pub -h 192.168.1.100 -t mtopic -u chisj -P chisj -m “test” |
mosquitto_pub(发布)用法
命令 | 代表· | 含义 |
---|---|---|
-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 | 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 | 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.QoS 2消息流的第一部分,表示消息发布已记录(PUBREC) | PUBREC报文是对服务质量级别为2的发布报文的应答。这是服务质量级别为2的协议流的第二个报文。PUBREC是由服务器端对发布报文的客户端的应答,或者是报文订阅者对发布报文的服务器的应答。 |
6.QoS 2消息流的第二部分,表示消息发布已释放(PUBREL) | PUBREL是报文发布者对来自服务器的PUBREC报文的确认,或者是服务器对来自报文订阅者的PUBREC报文的确认。它是服务质量级别为2的协议流的第三个报文。 |
7.QoS 2消息流的第三部分,表示消息发布完成(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.断开通知、客户端终止连接前优雅地通知MQTT代理(DISCONNECT) | 断开通知报文是从客户端发往服务器端用来指明将要关闭它的TCP/IP连接,他允许彻底地断开,而非只是下线。如果客户端已经和干净会话标志集联系,那么所有先前关于客户端维护的信息将被丢弃。一个服务器在收到断开报文之后,不能依赖客户端关闭TCP/IP连接 |
扩展命令
列出所有端口的情况
netstat -ano
查看被占用端口对应的PID
netstat -aon|findstr “49157”
Linux netstat
查看1883端口的连接情况,观察TCP状态图
netstat -nalp|grep 1883
查看1883端口的客户端连接数
netstat -nalp|grep 1883|wc -l