為了方便演示,我這里就用windows環境下安裝的mosquitto進行操作,操作方式和linux系統下是一樣的。
一、windows安裝mosquitto
-
下載mosquitto
mosquitto官網:https://mosquitto.org/download/
下載完成后,雙擊安裝即可
-
安裝完成后的文件目錄
-
添加環境變量
-
配置Mosquitto賬號密碼
在cmd中輸入
# 用戶名
mosquitto_passwd -c pwfile 用戶名
# 密碼
mosquitto_passwd -c pwfile bees
mosquitto使用
在Windows PowerShell中執行一下命令
# 啟動服務器
.\mosquitto.exe -c mosquitto.conf -v
# 訂閱者
.\mosquitto_sub.exe -t "temp"
# 發布者
.\mosquitto_pub.exe -t "temp" -m "aaaaaaaaa"
-
mosquitto服務器使用
-
mosquitto訂閱者使用
-
mosquitto發布者使用
-
常用選項
-
-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常用配置
在mosquitto.conf文件中更改默認配置
# 允許匿名用戶
#allow_anonymous true
# 綁定ip和端口
#listener 1883 192.168.2.100
#listener 1883 0.0.0.0
# 允許的最大連接數,-1表示沒有限制
#max_connections -1
注意:‘bind_address’和‘port’已經過期,需要使用listener
常見問題
-
默認端口被占用
解決辦法
1)查找被占用的端口// 查找使用的端口 netstat -ano // 查找指定的端口 netstat -ano |findstr 1883
如下圖所示:
2)停用端口
// 停用端口 taskkill -PID 4916 -F // 查看占用此端口的進程,在任務管理器中強制結束 tasklist|findstr 4916
如下圖所示:
參考文獻
mosquitto 用法與簡介:http://blog.chinaunix.net/uid-29616823-id-4852120.html
MQTT服務器(Broker) - mosquitto配置文件詳解:https://www.cnblogs.com/shuiche/p/12630591.html
Mosquitto 使用說明:https://www.cnblogs.com/yueli/p/7478543.html