1. 程式人生 > >C# MQTT客戶端--M2MQTT

C# MQTT客戶端--M2MQTT

準備

  • 本客戶端使用VS2015進行開發,所以需要實現安裝VS2015。
  • 開發之前需要下載M2MQTT庫。m2mqtt庫的獲取,可以使用vs的nuget來獲取。
  • 重啟VS2015後,開啟自己的C#工程,然後開啟“工具”-“Nuget包管理器”-“程式包管理器控制檯”
    在控制檯中輸入“Install-Package M2Mqtt -Version 4.3.0”即可自動完成配置。

程式碼

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using
System.Net; using System.Security.Cryptography.X509Certificates; using uPLibrary.Networking.M2Mqtt; using uPLibrary.Networking.M2Mqtt.Messages; using System.Net.Security; namespace m2mqtt_test { class Program { static void messageReceive(object sender, MqttMsgPublishEventArgs e) { string
msg = "Topic:" + e.Topic + " Message:" + System.Text.Encoding.Default.GetString(e.Message); Console.WriteLine(msg); } static bool cafileValidCallback(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { string
msg = "X509 鏈狀態:"; foreach (X509ChainStatus status in chain.ChainStatus) { msg += status.StatusInformation + "\n"; } msg += "SSL策略問題:" + (int)sslPolicyErrors; Console.WriteLine(msg); if (sslPolicyErrors != SslPolicyErrors.None) return false; return true; } static void Main(string[] args) { string brokerHostName = "192.168.1.38"; int brokerPort = 8883; string clientId = "m2mqtt"; string username = "develop"; string password = "666666"; string[] topic = {"topic"}; byte[] qosLevels = { MqttMsgBase.QOS_LEVEL_AT_MOST_ONCE}; string caPath = "C:/MqttSSL/ca.crt"; X509Certificate caCert = new X509Certificate(caPath); Console.WriteLine(caCert.ToString(true)+"\n"+caCert.ToString()); Console.ReadKey(); Console.WriteLine("------------------------分割線-------------------------------"); //無SSL連線 //MqttClient client = new MqttClient(brokerHostName,brokerPort,false,null,null,MqttSslProtocols.None); try { //單向SSL通訊 MqttClient client = new MqttClient(brokerHostName, brokerPort, true, caCert, null, MqttSslProtocols.TLSv1_2, new RemoteCertificateValidationCallback(cafileValidCallback)); //訊息接受 client.MqttMsgPublishReceived += new MqttClient.MqttMsgPublishEventHandler(messageReceive); //連線Broker client.Connect(clientId, username, password); client.Subscribe(topic, qosLevels); } catch (System.Exception) { Console.WriteLine("連線失敗!"); Console.ReadKey(); } } } }
  • 可能C#遇到的問題:一個是因為客戶端和服務端以及簽發機構的證書資訊相同,導致客戶端和服務端不能識別證書,導致連線失敗。另外一個原因是因為自己生成的證書沒有新增到系統的根證書中,不被根證書所信任導致連線失敗。

相關推薦

C# MQTT客戶--M2MQTT

準備 本客戶端使用VS2015進行開發,所以需要實現安裝VS2015。 開發之前需要下載M2MQTT庫。m2mqtt庫的獲取,可以使用vs的nuget來獲取。 重啟VS2015後,開啟自己的C#工程,然後開啟“工具”-“Nuget包管理器”-“程式包管

MQTT Client library for CMQTT客戶C語言庫-paho)

  最近在使用Paho的MQTT客戶端,由於英語看著有點慢,因此將其翻譯為中文,與大家共享。由於英語水平有限,如有翻譯不對之處,請幫忙指出。 MQTT客戶端C語言庫   MQTT客戶端的C語言庫.© Copyright IBM Corp

C#開發WEBService服務 C++開發客戶調用WEBService服務

blank 內容 目錄 www nal .net 操作 service服務 3.1 編寫程序 http://blog.csdn.net/u011835515/article/details/47615425 遇到問題及解決方法: HTTP 錯誤 500.19- I

【轉】C#獲取客戶及服務器主機信息及其獲取IP地址

string c# forward ria 工具 ip地址 客戶 ext add 原文發布時間為:2009-10-28 —— 來源於本人的百度文章 [由搬家工具導入]小结:1、REMOTE_ADDR 不&

C# https客戶獲取證書的工具方法

cas cer flag data- 附加 1-1 plain start html 1. 導入證書到個人計算機中2. 獲取證書 [csharp] view plain copy print? private static X509Certificate2

C#Socket_TCP(客戶,服務器通信)

pad prot parse 創建 inter 地址 send lec point 客戶端與服務器通信,通過IP(識別主機)+端口號(識別應用程序)。 IP地址查詢方式:Windows+R鍵,輸入cmd,輸入ipconfig。 端口號:可自行設定,但通常為4位。 服務器端:

轉:使用Mosquitto-Auth-Plugin對mqtt客戶進行驗證

https://www.lixiaodong.com/?p=1631.安裝需要的包sudo apt-get install libc-ares-dev libcurl4-openssl-dev libmysqlclient-dev2.下載mosquitto原始碼並編譯安裝從http://mosquitto.o

MQTT再學習 -- MQTT 客戶原始碼分析

MQTT 原始碼分析,搜尋了一下發現網路上講的很少,多是逍遙子的那幾篇。 參看:逍遙子_mosquitto原始碼分析系列 參看:MQTT libmosquitto原始碼分析 參看:Mosquitto學習筆記 一、目錄結構首先我們還是來看一下 mosquitto-1.4.14 的原始碼目錄結構

阿里雲MQTT 客戶收發 MQTT 訊息(使用一個裝置控制另一個裝置)

https://help.aliyun.com/document_detail/44874.html?spm=a2c4g.11186623.6.721.qxegRK 1保證只有一組使用者AccessKey,怕衝突其他的可暫時禁用 (踩過的坑:域名必須是這個格式tcp://mqtt-c

MQTT客戶

MQTT客戶端 最近公司專案中使用到了一個MQTT的協議,用這個通訊協議將嵌入式端收集到的資料接入到物聯網中,很是方便的解決了,嵌入式端儲存空間小,也解決了使用者需要自定義使用這些記錄資料的需求。而且相應的開發一個能夠將訂閱的訊息儲存到mysql資料庫中,使用者只需極少的配置就能夠完成,將嵌入式裝置的記錄轉

記筆記:C# Socket客戶監聽伺服器處理方案【同步】

方案主要功能:        (1)客戶端同步監聽來自伺服器端的資料(開啟子執行緒監聽)        (2)客戶端向伺服器端傳送資料(主執行緒傳送,並控制)        

windows下QT5.7.1如何編譯MQTT客戶

本文主要講述在windows平臺下QT5.7.1如何編譯MQTT客戶端,讓大家避免我走過的一些彎路。具體MQTT的使用後續會進行更新。 一. 下載原始碼 一般需要在github或者其它地方下載MQTT客戶端的原始碼,一般都可以下到,這裡附上鍊接: https://github.co

【原創】MQTT客戶搭建-最清晰的MQTT協議架構

關於MQTT客戶端或者伺服器,在MQTT的github主頁上應該有不少的軟體和工具,很多時候我們的目的是用MQTT協議去開發自己的專案,而現成的軟體或者工具,主要是提供我們在開發前期的調研、開發過程的測試,都是必不可少的學習借鑑用的,所以,欲善其事,先利其器吧! MQT

C#寫客戶接收mjpg-streamer視訊流

最近用wpf做一個樹莓派機器人的綜合控制端,需要解析機器人攝像頭的視訊流,樹莓派是用mjpg-streamer呼叫並搭建了視訊流服務。 客戶端解析mjpg-streamer視訊幀的原理是:建立Http長連線,每次接收1024長度的資料,資料流中包含資料頭資訊和緊跟在資料頭資

c# Socket(客戶)非同步能訊

        實現功能,能夠隨時傳送資料,並且能夠隨時接收服務端傳送過來的資料,能夠判斷服務端或埠網路的連線狀態,隨時檢視與伺服器通訊是否通暢。         可以使用VS建立一個使用者控制元件或建立一個類,來控制Socket通訊,程式碼成熟,建議做成使用者控制元件,這

參考大神教程完成阿里雲自建伺服器esp8266和mqtt客戶成功對接

阿里雲自建伺服器esp8266和mqtt客戶端成功對接 阿里雲伺服器部分參考esp8266嵌入式大神資料:大神部落格 最近組建了一個小群,感興趣的可以加入一起玩:476840321 微控制器也是很簡單的,用的esp8266最小系統。 過程中間遇到了

【微信小程式控制硬體②】 開始微信小程式之旅,匯入小程式Mqtt客戶原始碼,實現簡單的驗證和通訊於伺服器!(附帶原始碼)

本博文由熱愛分享熱愛技術的半顆心臟原創,非官方人員、非組織名義編寫,博文如有不對或侵犯您的權益,請及時留言,第一時間糾正! 一、前言; 繼續我們的小程式控制智慧硬體(包括esp8266)學

mqtt 客戶 基於Python

這幾天一直在搞安全通訊,微信小程式,反向代理等等,為了能讓自己對整個系統做到把控,主要是需要了解每一個細節的地方,所以今天花了3個小時的時間學習了Python,因為我要用它來做Http和WebSocket ,其實還有就是群裡的 "卡狼"一直在說用Python開發8266更方便快捷. 先說學了之後的感受,確實

linux下安裝c++ rabbitmq客戶SimpleAmqpClient

linux下安裝SimpleAmqpClient (注:本文以 github為基礎,並加以說明,額 …就是菜鳥教程) 安裝boost-1.47.0 下載官網 在官網找到適合的版本下載即可 開啟目錄後 ./bootstrap.sh ./bja

MQTTnet 實現MQTT 客戶和服務

服務端: class Program { private static MqttServer mqttServer = null; static void Main(string[] args) { Mqtt