不知道說什麼 ~
mosquitto是一個開源broker
mosquitto包括服務端和客戶端
常用命令
場景 | 命令 | 分析 |
---|---|---|
啓動代理服務 | 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 #