MQTT協議消息代理服務遠程連接

目錄

1. Linux 搭建 Mosquitto

2. Linux 安裝Cpolar

3. 創建MQTT服務公網連接地址

4. 客戶端遠程連接MQTT服務

5. 代碼調用MQTT服務

6. 固定連接TCP公網地址

7. 固定地址連接測試


Mosquitto是一個開源的消息代理,它實現了MQTT協議版本3.1和3.1.1。它可以在不同的平臺上運行,包括Windows、Linux、macOS等。mosquitto可以用于物聯網、傳感器、移動應用程序等場景,提供了一種輕量級的、可靠的、基于發布/訂閱模式的消息傳遞機制。

MQTT協議遠程訪問的好處在于它可以實現跨網絡的遠程通信,使得設備可以在不同的地方進行控制和監控。同時,MQTT協議具有輕量級、高效、可靠等特點,可以在低帶寬、不穩定網絡環境下穩定運行。此外,MQTT協議還支持多種編程語言和平臺,方便開發者進行二次開發和集成

下面介紹在Linux 中搭建Mosquitto MQTT協議消息服務端,并結合Cpolar 內網穿透工具實現遠程連接!

1. Linux 搭建 Mosquitto

本例在centos 7系統,使用yum 一鍵安裝:

yum install mosquitto -y

安裝完成后,下面是一些操作Mosquitto服務命令

sudo systemctl start mosquitto     # 啟動 Mosquitto 服務
sudo systemctl stop mosquitto      # 停止 Mosquitto 服務
sudo systemctl restart mosquitto   # 重新啟動 Mosquitto 服務
sudo systemctl status mosquitto    #檢查服務器狀態

執行啟動命令后,輸入查看狀態,我們可以看到服務已經運行成功了,本地安裝成功了,下面安裝cpolar工具,穿透Mosquitto 服務的本地1883端口,實現遠程訪問連接.

2. Linux 安裝Cpolar

上面我們安裝成功了Mosquitto MQTT服務器,下面我們在Linux安裝cpolar內網穿透工具,通過cpolar 轉發本地端口映射的公網地址,我們可以很容易實現遠程訪問,而無需自己注冊域名購買云服務器.下面是安裝cpolar步驟

cpolar官網地址: https://www.cpolar.com

  • 使用一鍵腳本安裝命令
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
  • 向系統添加服務
sudo systemctl enable cpolar
  • 啟動cpolar服務
sudo systemctl start cpolar

cpolar安裝成功后,在外部瀏覽器上訪問Linux 的9200端口即:【http://局域網ip:9200】,使用cpolar賬號登錄,登錄后即可看到cpolar web 配置界面,結下來在web 管理界面配置即可

3. 創建MQTT服務公網連接地址

登錄cpolar web UI管理界面后,點擊左側儀表盤的隧道管理——創建隧道:

  • 隧道名稱:可自定義,注意不要與已有的隧道名稱重復
  • 協議:tcp
  • 本地地址:1883 (本地默認端口)
  • 域名類型:臨時隨機TCP端口
  • 地區:選擇China VIP

點擊創建

然后打開左側在線隧道列表,查看剛剛創建隧道后生成的tcp地址,這個地址就是公網連接地址,我們可以在任意設備上使用該地址進行連接

4. 客戶端遠程連接MQTT服務

上面在cpolar中創建了 公網地址,下面我們使用MQTT客戶端工具mqttfx進行遠程連接測試,如果沒有該客戶端,可以進入官方下載:https://softblade.de/en/download-2/,下載后安裝打開,點擊設置圖標

通過cpolar公網地址進行連接,Address值為公網地址,Port 值為公網地址后面對應的端口號,輸入完點擊應用

然后回到主界面,點擊connect,燈變為綠色,表示連接成功

我們可以測試,是否可以發布消息和訂閱,首先在Subscribe訂閱界面填寫一個topic 訂閱ID,然后點擊按鈕Subscribe,開始訂閱

然后在Publish 發布界面,輸入同樣的topic ID,然后輸入需要發布的消息,點擊按鈕Publish

回到Subscribe訂閱界面,我們可以看到,成功訂閱到了該條信息

5. 代碼調用MQTT服務

同樣 我們在代碼層面進行連接,以Java 為例,導入相關包

  <dependency><groupId>org.eclipse.paho</groupId><artifactId>org.eclipse.paho.client.mqttv3</artifactId><version>1.1.0</version></dependency>

然后使用Cpolar 公網地址進行連接,輸入ClientID,向同一個topic進行發布消息,當然,這邊測試,地址是寫在內部,如生產環境,建議將地址進行外部配置,有助于方便后續修改

程序運行后,我們可以看到,在客戶端Subscribe 界面工具上,看到了我們代碼中發布的消息數據,也是可以連接測試成功

6. 固定連接TCP公網地址

要注意的是,以上步驟使用的是隨機臨時tcp端口地址,所生成的公網地址為隨機臨時地址,該公網地址24小時內會隨機變化。我們接下來為其配置固定的TCP端口地址,該地址不會變化,設置后將無需每天重復修改地址。

配置固定tcp端口地址需要將cpolar升級到專業版套餐或以上。

保留一個固定tcp地址,登錄cpolar官網,點擊左側的預留,找到保留的tcp地址,我們來為我的世界保留一個固定tcp地址:

  • 地區:選擇China
  • 描述:即備注,可自定義

點擊保留

地址保留成功后,系統會生成相應的固定公網地址,將其復制下來

打開cpolar web ui管理界面,點擊左側儀表盤的隧道管理——隧道列表,找到我們上面創建的TCP隧道,點擊右側的編輯

修改隧道信息,將保留成功的固定tcp地址配置到隧道中

  • 端口類型:修改為固定tcp端口
  • 預留的tcp地址:填寫官網保留成功的地址,

點擊更新

隧道更新成功后,點擊左側儀表盤的狀態——在線隧道列表,可以看到公網地址已經更新成為了固定TCP地址。

7. 固定地址連接測試

固定好了地址后,程序中修改成我們固定的TCP地址進行連接,當然,這邊測試,地址是寫在內部,如生產環境,建議將地址進行外部配置,有助于方便后續修改

可以看到接收訂閱到了發送的消息,一個永久不變的固定地址就設置好了

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/160470.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/160470.shtml
英文地址,請注明出處:http://en.pswp.cn/news/160470.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

第二十章:多線程

進程 線程的特點 1.進程是資源分配的最小單位&#xff0c;線程是最小的執行單位 2.一個進程可以有多個線程 3.線程共享進程資源 package twentyth; public class ThreadTest extends Thread { public void run() { for (int i 1; i < 10; i) {//繼承重…

Unity開發之C#基礎-File文件讀取

前言 今天我們將要講解到c#中 對于文件的讀寫是怎樣的 那么沒接觸過特別系統編程小伙伴們應該會有一個疑問 這跟文件有什么關系呢&#xff1f; 我們這樣來理解 首先 大家對電腦或多或少都應該有不少的了解吧 那么我們這些軟件 都是通過變成一個一個文件保存在電腦中 我們才可以…

【2023C卷最新題目】20天拿下華為OD筆試之【貪心】2023C-找座位/2023B-座位調整-全網注釋最詳細分類最全的華為OD真題題解

文章目錄 題目描述與示例題目描述輸入輸出說明示例一輸入輸出 示例二輸入輸出說明 解題思路代碼PythonJavaC時空復雜度 相同問題不同描述2023C-找座位題目描述輸入描述輸出描述示例一輸入輸出 示例二輸入輸出 華為OD算法/大廠面試高頻題算法練習沖刺訓練 題目描述與示例 題目描…

Spring Boot創建和使用(重要)

Spring的誕生是為了簡化Java程序開發的&#xff01; Spring Boot的誕生是為了簡化Spring程序開發的&#xff01; Spring Boot就是Spring框架的腳手架&#xff0c;為了快速開發Spring框架而誕生的&#xff01;&#xff01; Spring Boot的優點&#xff1a; 快速集成框架&#x…

2023年G2電站鍋爐司爐證考試題庫及G2電站鍋爐司爐試題解析

題庫來源&#xff1a;安全生產模擬考試一點通公眾號小程序 2023年G2電站鍋爐司爐證考試題庫及G2電站鍋爐司爐試題解析是安全生產模擬考試一點通結合&#xff08;安監局&#xff09;特種作業人員操作證考試大綱和&#xff08;質檢局&#xff09;特種設備作業人員上崗證考試大綱…

MySQL 事務的底層原理和 MVCC(一)

在事務的實現機制上&#xff0c;MySQL 采用的是 WAL&#xff08;Write-ahead logging&#xff0c;預寫式日志&#xff09;機制來實現的。 在使用 WAL 的系統中&#xff0c;所有的修改都先被寫入到日志中&#xff0c;然后再被應用到系統中。通常包含 redo 和 undo 兩部分信息。 …

【Java開發】 Springboot集成Mybatis-Flex

1 Mybatis-Flex 介紹 1.1簡介 Mybatis-Flex 是一個優雅的 Mybatis 增強框架&#xff0c;它非常輕量、同時擁有極高的性能與靈活性。我們可以輕松的使用 Mybaits-Flex 鏈接任何數據庫&#xff0c;其內置的 QueryWrapper 亮點幫助我們極大的減少了 SQL 編寫的工作的同時&#xff…

cocos2dx ??Animate3D(二)

Twirl 扭曲旋轉特效 // 持續時間(時間過后不會回到原來的樣子) // 整個屏幕被分成幾行幾列 // 扭曲中心位置 // 扭曲的數量 // 振幅 static Twirl* create(float duration, const Size& gridSize, const Vec2& position, unsigned int twirls, float amplitude)…

編程語言發展史:C語言的誕生及其影響

預計更新 第一部分&#xff1a;早期編程語言 1.1布爾代數和機器語言 1.2匯編語言的出現和發展 1.3高級語言的興起 第二部分&#xff1a;主流編程語言 1.1 C語言的誕生及其影響 1.2 C語言的發展和應用 1.3 Java語言的出現和發展 1.4 Python語言的興起和特點 1.5 JavaScript語言…

基于springboot實現攝影跟拍預定管理系統【項目源碼+論文說明】計算機畢業設計

基于springboot實現攝影跟拍預定管理系統演示 摘要 首先,論文一開始便是清楚的論述了系統的研究內容。其次,剖析系統需求分析,弄明白“做什么”,分析包括業務分析和業務流程的分析以及用例分析,更進一步明確系統的需求。然后在明白了系統的需求基礎上需要進一步地設計系統,主要…

【2018年數據結構真題】

方法一 給定一個含n(n>1)個整數的數組&#xff0c;請設計一個在時間上盡可能高效的算法&#xff0c;找出數組中未出現的最小正整數。例如&#xff0c;數組{-5&#xff0c;3&#xff0c;2&#xff0c;3}中未出現的最小正整數是1&#xff1b;數組{1&#xff0c;2&#xff0c;…

AIGC變革BI行業,永洪發布vividime全球化品牌

大數據產業創新服務媒體 ——聚焦數據 改變商業 國內BI商業智能市場&#xff0c;一直有著“內永洪&#xff0c;外Tableau”的說法。成立于2012年的永洪科技經過十多年的發展&#xff0c;早已崛起為國內大數據行業的一支勁旅。 ChatGPT火爆出圈之后&#xff0c;AIGC快速滲透&am…

每日一練 | 華為認證真題練習Day19

Day19 華為認證中級考試真題 1、DHCP協議運行過程中&#xff0c;客戶端從申請到IP地址時的流程是 A.1-2-3-4 B.1-4-3-2 C.3-2-1-4 D.3-4-1-2 2、VRRP報文的IP協議號是&#xff1a; A.112 B.114 C.116 D.118 3、MPLS的標簽字段共有多少bit? A.8 B.3 C.1 D.20 4…

【C++】vector的介紹與使用

&#x1f9d1;?&#x1f393;個人主頁&#xff1a;簡 料 &#x1f3c6;所屬專欄&#xff1a;C &#x1f3c6;個人社區&#xff1a;越努力越幸運社區 &#x1f3c6;簡 介&#xff1a;簡料簡料&#xff0c;簡單有料~在校大學生一枚&#xff0c;專注C/C/GO的干貨分…

2020年下半年試題一:論信息系統項目的成本管理

論文題目 1.概要敘述你參與過的信息系統項目&#xff08;項目的背景、項目規模、發起單位、目的、項目內容、組織結構、項目周期、交付的成果等&#xff09;&#xff0c;并說明你在其中承擔的工作&#xff08;項目背景要求本人真實經歷&#xff0c;不得抄襲及杜撰&#xff09;。…

編程語言發展史:匯編語言的出現和發展

一、匯編語言的出現 隨著計算機硬件的發展&#xff0c;機器語言變得越來越復雜&#xff0c;難以被人類程序員理解和編寫。因此&#xff0c;出現了更高級別的編程語言&#xff0c;這些語言使用類似英語的語法&#xff0c;使程序員能夠更容易地編寫和維護程序。 其中一種高級語…

web網頁滲透測試

web網頁滲透測試 流程 信息收集網站掃描訪問控制測試漏洞掃描嘗試注入攻擊驗證漏洞后滲透測試滲透測試報告 信息收集 收集目標網站的基本信息&#xff0c;包括域名、IP 地址、子域名等。使用 WHOIS 查詢、搜索引擎、子域名枚舉工具等進行信息收集。 網站掃描 使用端口掃描…

【Java 進階篇】Redis 數據結構:輕松駕馭多樣性

引言 Redis是一款強大的鍵值對存儲系統&#xff0c;其數據結構的多樣性是其引以為傲的特點之一。在這篇博客中&#xff0c;我們將深入探討Redis的主要數據結構&#xff0c;包括字符串、哈希表、列表、集合和有序集合&#xff0c;并通過實例代碼演示它們的用法。 1. 字符串&am…

在中國企業出海的大浪潮下,亞馬遜云科技提供遍及全球的基礎設施和技術支持

中國技術出海是中國企業更高層次更高質量的全球化。在人類文明發展史上&#xff0c;凝聚中國古人智慧結晶的造紙術、印刷術、火藥、指南針等&#xff0c;曾為中國技術出海寫下過濃墨重彩的一筆。在今天&#xff0c;如金山辦公、店匠科技、ADVANCE.AI等公司又以技術立業&#xf…

msvcp140.dll是什么?msvcp140.dll丟失的有哪些解決方法

在計算機使用過程中&#xff0c;我們經常會遇到一些錯誤提示&#xff0c;其中之一就是“msvcp140.dll丟失”。這個錯誤通常會導致某些應用程序無法正常運行。為了解決這個問題&#xff0c;我們需要采取一些措施來修復丟失的msvcp140.dll文件。本文將詳細介紹5個解決msvcp140.dl…