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 C (MQTT客戶端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