日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

MQTT简介

發(fā)布時間:2025/1/21 c/c++ 152 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MQTT简介 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
MQ 遙測傳輸 (MQTT) 是輕量級基于代理的發(fā)布-訂閱的消息傳輸協(xié)議,設計思想是開放、簡單、輕量、易于實現(xiàn)。這些特點使它適用于受限環(huán)境。如,但不僅限于此:
  • 網(wǎng)絡代價昂貴,帶寬低、不可靠。
  • 在嵌入設備中運行,處理器和內存資源有限
該協(xié)議的特點有:
  • 使用發(fā)布/訂閱消息模式,提供一對多的消息發(fā)布,解除應用程序耦合。
  • 對負載內容屏蔽的消息傳輸。
  • 使用 TCP/IP 提供網(wǎng)絡連接。
  • 小型傳輸,開銷很小(固定長度的頭部是 2 字節(jié)),協(xié)議交換最小化,以降低網(wǎng)絡流量。
  • 使用 Last Will 和 Testament 特性通知有關各方客戶端異常中斷的機制。
  • 有三種消息發(fā)布服務質量:
    • “至多一次”,消息發(fā)布完全依賴底層 TCP/IP 網(wǎng)絡。會發(fā)生消息丟失或重復。這一級別可用于如下情況,環(huán)境傳感器數(shù)據(jù),丟失一次讀記錄無所謂,因為不久后還會有第二次發(fā)送。
    • “至少一次”,確保消息到達,但消息重復可能會發(fā)生。
    • “只有一次”,確保消息到達一次。這一級別可用于如下情況,在計費系統(tǒng)中,消息重復或丟失會導致不正確的結果。
Windows環(huán)境下搭建服務器 先說下在windows環(huán)境下如何進行安裝,下面以服務器Apollo 1.7.1為例 1、在這里下載Apollo服務器,下載后解壓,然后運行apache-apollo-1.7.1\bin\apollo.cmd,輸入create mybroker(名字任意取,這里是根據(jù)官網(wǎng)介紹的來取的,我的運行老是自動關閉,所以我直接輸入絕對路徑了:D:\apache-apollo-1.7.1\bin\apollo create mybreaker)創(chuàng)建服務器實例,創(chuàng)建的服務器實例目錄包含了下面的目錄:
  • bin: 與這個實例相關聯(lián)的執(zhí)行腳本
  • etc: 包含實例的配置文件
  • data: 用于存儲持久消息的數(shù)據(jù)文件
  • log: 日志文件
  • tmp: 在代理間可以安全刪除的臨時文件
2、create mybroker之后會在bin目錄下生成mybroker文件夾,里面包含有很多信息,其中etc\apollo.xml文件下是配置服務器信息的文件,etc\users.properties文件包含連接MQTT服務器時用到的用戶名和密碼,后面會介紹,可以修改原始的admin=password,可以接著換行添加新的用戶名密碼。 3、打開cmd,進入mybroker\bin\ 運行apollo-broker run 開啟服務器:

其中我們要留意的: MQTT服務器TCP連接端口:tcp://0.0.0.0:61613(官網(wǎng)給出的例子使用的端口是1883,我們可以修改apollo.xml或者直接使用61613) 后臺登錄接口:https://127.0.0.1:61681/http://127.0.0.1:61680/ 可以在瀏覽器中輸入http://127.0.0.1:61680/http://127.0.0.1:61680/查看是否安裝成功,初始賬號和密碼為admin和password,該界面展示了topic,連接數(shù)等很多信息。 Linux環(huán)境下搭建服務器 說起來linux環(huán)境的搭建,真的是苦大仇深啊,其中的苦不言自明,總結出來給大家,希望大家可以少走些彎路,下面開始吧 ?我用的版本為mosquitto-1.4.10,歷史版本大家可以上官網(wǎng)了解
  • 下載源代碼包
cd /usr/local/src <==切換目錄 wget?http://mosquitto.org/files/source/mosquitto-1.4.10.tar.gz
  • 解壓
tar zxfv /root/mosquitto-1.4.10.tar.gz <==解壓到此目錄 解壓之后,我們可以在源碼目錄里面找到主要的配置文件config.mk,其中包含了所有Mosquitto的安裝選項,詳細的參數(shù)說明如下: #?是否支持tcpd/libwrap功能.#WITH_WRAP:=yes#?是否開啟SSL/TLS支持#WITH_TLS:=yes#?是否開啟TLS/PSK支持#WITH_TLS_PSK:=yes#?Comment?out?to?disable?client?client?threading?support.#WITH_THREADING:=yes#?是否使用嚴格的協(xié)議版本(老版本兼容會有點問題)#WITH_STRICT_PROTOCOL:=yes#?是否開啟橋接模式#WITH_BRIDGE:=yes#?是否開啟持久化功能#WITH_PERSISTENCE:=yes#?是否監(jiān)控運行狀態(tài)#WITH_MEMORY_TRACKING:=yes ?這里需要注意的是,默認情況下Mosquitto的安裝需要OpenSSL的支持;如果不需要SSL,則需要關閉config.mk里面的某些與SSL功能 有關的選項(WITH_TLS、WITH_TLS_PSK),很多文章都是把這兩項設為no了(http://www.360doc.com/content/14/1202/10/12928831_429776786.shtml),
  • 進入目錄
cd mosquitto-1.4.10/
  • 編譯
make clean; make make check 如果你命足夠好,那接下來就是運行make install進行安裝了,我是命苦,馬上報錯了 http://blog.csdn.net/fh15138451783/article/details/53160173 http://houjixin.blog.163.com/blog/static/3562841020156142544694/
  • 安裝
make install
服務器的配置文件mosquitto.conf如下 安裝完成之后,所有配置文件會被放置于/etc/mosquitto/目錄下,其中最重要的就是Mosquitto的配置文件,即mosquitto.conf,但文件夾里并沒有mosquitto.conf,而是有一個mosquitto.conf.example,我們復制一下即可,為了服務器能夠使用,我們需要做一些配置 # ================================================================= ? # General configuration ? # ================================================================= ??? # 客戶端心跳的間隔時間 ? #retry_interval 20 ?? # 系統(tǒng)狀態(tài)的刷新時間 ? #sys_interval 10 ? # 系統(tǒng)資源的回收時間,0表示盡快處理 ? #store_clean_interval 10 ? # 服務進程的PID ? #pid_file /var/run/mosquitto.pid ? # 服務進程的系統(tǒng)用戶 ? #user mosquitto ? # 客戶端心跳消息的最大并發(fā)數(shù) ? #max_inflight_messages 10 # 客戶端心跳消息緩存隊列 ? #max_queued_messages 100 ? # 用于設置客戶端長連接的過期時間,默認永不過期 ? #persistent_client_expiration ? ?? # ================================================================= ? # Default listener ? # ================================================================= ? # 服務綁定的IP地址 ? #bind_address ?? # 服務綁定的端口號 ? #port 1883 ??? # 允許的最大連接數(shù),-1表示沒有限制 ? #max_connections -1 ?? # cafileCA證書文件 ? # capathCA證書目錄 ? # certfilePEM證書文件 ? # keyfilePEM密鑰文件 ?? ?? # 必須提供證書以保證數(shù)據(jù)安全性 ? #require_certificate false? # require_certificate值為trueuse_identity_as_username也必須為true ? #use_identity_as_username false ? # 啟用PSKPre-shared-key)支持 ? #psk_hint ? ?? # SSL/TSL加密算法,可以使用“openssl ciphers”命令獲取 ? # as the output of that command. ? #ciphers ? # ================================================================= ? # Persistence ? # ================================================================= ? # 消息自動保存的間隔時間 ? #autosave_interval 1800 ? # 消息自動保存功能的開關 ? #autosave_on_changes false ? # 持久化功能的開關 ? persistence true ? # 持久化DB文件 ? #persistence_file mosquitto.db ? # 持久化DB文件目錄 ? #persistence_location /var/lib/mosquitto/ ?
# ================================================================= ? # Logging ? # ================================================================= ?? # 4種日志模式:stdoutstderrsyslogtopic ? # none 則表示不記日志,此配置可以提升些許性能 ? log_dest none ? ?選擇日志的級別(可設置多項) ? #log_type error ? #log_type warning ? #log_type notice ? #log_type information ? ?? # 是否記錄客戶端連接信息 ? #connection_messages true ? # 是否記錄日志時間 ? #log_timestamp true ? ?? # ================================================================= ? # Security ? # ================================================================= ??? # 客戶端ID的前綴限制,可用于保證安全性 ? #clientid_prefixes ?? # 允許匿名用戶 ? #allow_anonymous true ?? # 用戶/密碼文件,默認格式:username:password ? #password_file ? # PSK格式密碼文件,默認格式:identity:key ? #psk_file ? # pattern write sensor/%u/data ? # ACL權限配置,常用語法如下: ? # 用戶限制:user <username> ? # 話題限制:topic [read|write] <topic> ? # 正則限制:pattern write sensor/%u/data ? #acl_file ? ?? # ================================================================= ? # Bridges ? # ================================================================= ? # 允許服務之間使用橋接模式(可用于分布式部署) ? #connection <name> ? #address <host>[:<port>] ? #topic <topic> [[[out | in | both] qos-level] local-prefix remote-prefix] ?? # 設置橋接的客戶端ID ? #clientid ?? # 橋接斷開時,是否清除遠程服務器中的消息 ? #cleansession false ?? # 是否發(fā)布橋接的狀態(tài)信息 ? #notifications true ? # 設置橋接模式下,消息將會發(fā)布到的話題地址 ? # $SYS/broker/connection/<clientid>/state ? #notification_topic ? # 設置橋接的keepalive數(shù)值 ? #keepalive_interval 60 ? # 橋接模式,目前有三種:automaticlazyonce ? #start_type automatic ? # 橋接模式automatic的超時時間 ? #restart_timeout 30 ?? # 橋接模式lazy的超時時間 ? #idle_timeout 60 ?? # 橋接客戶端的用戶名 ? #username ?? # 橋接客戶端的密碼 ? #password ?? # bridge_cafile:橋接客戶端的CA證書文件 ? # bridge_capath:橋接客戶端的CA證書目錄 ? # bridge_certfile:橋接客戶端的PEM證書文件 ? # bridge_keyfile:橋接客戶端的PEM密鑰文件 ? ?? # 自己的配置可以放到以下目錄中 ? include_dir /etc/mosquitto/conf.d ? 一般我們只修改監(jiān)聽端口,CARfile
可能遇到的一些問題
  • 編譯找不到openssl/ssl.h
【解決方法】——安裝openssl sudo apt-get install libssl-dev
  • 編譯過程找不到ares.h
sudo apt-get install libc-ares-dev
  • 編譯過程找不到uuid/uuid.h
sudo apt-get install uuid-dev
  • 使用過程中找不到libmosquitto.so.1
? ? 【解決方法】——修改libmosquitto.so位置 # 創(chuàng)建鏈接 sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1 # 更新動態(tài)鏈接庫 sudo ldconfig
  • make: g++:命令未找到 ?
? ? 【解決方法】 ? ? 安裝g++編譯器 sudo apt-get install g++
  • Invalid user 'mosquitto'. ?
兩種解決辦法: (1)修改配置文件:mosquitto.conf ,增加登錄的用戶,例如當前登錄用戶為root (2)執(zhí)行命令增加當前用戶: ? adduser mosquitto
  • Address already in use
http://blog.csdn.net/just_do_it_ye/article/details/46827079 http://jingyan.baidu.com/article/08b6a591d06a9c14a80922e5.html 解決方法:用netstat -anp | more 可以看到客戶端還在使用服務器的端口,可以用kill 進程編號結束進程,對于結束不掉的進程可以使用:kill -s 9 進程編號強制結束 測試: 一、開起第一個終端窗口,直接運行mosquitto即可: 設置用戶和密碼:http://blog.csdn.net/smellmine/article/details/51216450 二、訂閱/發(fā)布
  • 訂閱主題,開啟一個新的終端,輸入如下
mosquitto_sub -v -t sensor 【-t】指定主題,此處為sensor 【-v】打印更多的調試信息 如需指定用戶名稱則加選項[-i] 用戶名
  • 發(fā)布內容,開啟一個新的終端,輸入如下
mosquitto_pub -t sensor? -m "hello world" *注意:如果消息中間有空格則消息要已單引號括起來。 【-t】指定主題 【-m】指定消息內容

未完待續(xù)

參考:

http://blog.csdn.net/yannanxiu/article/details/52703946 http://blog.csdn.net/djun100/article/details/25752491 http://blog.csdn.net/xukai871105/article/details/39252653 http://blog.csdn.net/shagoo/article/details/7910598 http://www.tuicool.com/articles/RjyuEbj https://my.oschina.net/u/1396253/blog/175773 官網(wǎng):http://mqtt.org/documentation http://www.ibm.com/developerworks/websphere/library/techarticles/0508_oconnell/0508_oconnell.html

總結

以上是生活随笔為你收集整理的MQTT简介的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。