MQTT mosquitto使用詳解

2021-09-07 18:05:13 字數 3966 閱讀 3812

用法:

mosquitto_pub [-d] [-h hostname] [-i client_id] [-i client id prefix] [-p port number] [-q message qos] [--quiet] [-r]  [-u username [-p password] ] [ --will-topic topic [--will-payload payload] [--will-qos qos] [--will-retain] ] -t message-topic

選項:

-f, –file:把乙個檔案的內容做為訊息的內容傳送。經測試,支援txt檔案,不支援doc等其他形式檔案。

-h, –host:說明所連線到的網域名稱,預設是localhost

-i, –id:客戶端的id號,如果沒有指定,預設是mosquitto_pub_加上客戶端的程序id,不能和–id_prefix同時使用。

-l, –stdin-line:從總段讀取輸入傳送訊息,一行為一條訊息,空白行不會被傳送。

-m, –message:從命令列傳送一條訊息,-m後面跟傳送的訊息內容。

-n, –null-message:傳送一條空訊息。

-p, –port:連線的埠號,預設是1883.

-p, –pw:指定密碼用於**認證,使用此選項時必須有有效的使用者名稱。

-q, –qos:指定訊息的服務質量,可以為0,1,2,預設是0.

–quiet:如果指定該選項,則不會有任何錯誤被列印,當然,這排除了無效的使用者輸入所引起的錯誤訊息。

-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 [-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 ...

命令:

-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連線。

IM 協議選擇 MQTT(mosquitto)

以前大多數im都使用私有協議,後來發展出開放的xmpp,使用xml通訊,不用說消耗網路資源太大了。我本來想使用protobuf自定義一套私有協議,但想到工作量還是太大,然後發現現在mqtt協議很熱門,特別是物聯網使用比較多,不過也可以用來做im訊息推送伺服器。暫時還用不著改mosquitto 直接安...

使用GraphEdit使用

1 註冊元件。其實乙個filter就是乙個com元件,所以使用之前需要註冊,可以有兩種方法對元件進行註冊。1.直接使用命令。命令列下輸入 regsvr32 hqtlystd.ax 編譯之後你會在工程目錄下的debug中找到hqtlystd.ax,這個就是要用的filter 即可註冊成功。2.vc6....

MySQL使用學習使用 mysql學習使用

1 mysql學習 1 安裝 ubuntu下直接安裝 apt get install mysql server 2 檢查伺服器是否啟動 sudo netstat tap grep mysql,如果啟動成功,出現以下資訊 tcp00localhost.localdomain mysql listen ...