MQTT协议 C#客户端(基于M2MQTT)

1、引入M2MQTT的dll库文件

点击此处下载 M2Mqtt.Net.dll

2、建立客户端连接并订阅

 

//创建客户端实例
MqttClient client = new MqttClient(IPAddress.Parse(MQTT_BROKER_ADDRESS)); //主机为IP时
MqttClient client = new MqttClient(MQTT_BROKER_ADDRESS); //当主机地址为域名时

// 注册消息接收处理事件,还可以注册消息订阅成功、取消订阅成功、与服务器断开等事件处理函数
client.MqttMsgPublishReceived += client_MqttMsgPublishReceived; 

//生成客户端ID并连接服务器
string clientId = Guid.NewGuid().ToString(); 
client.Connect(clientId); 

// 订阅主题"/home/temperature" 消息质量为 2 
client.Subscribe(new string[] { "/home/temperature" }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE }); 

... 

void client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e) 
{ 
//处理接收到的消息
string msg = System.Text.Encoding.Default.GetString(e.Message);
        textBox1.AppendText("收到消息:" + msg + "\r\n");
} 

3、发布消息

 

// 发布消息到主题 "/home/temperature" 消息质量为 2,不保留 
client.Publish("/home/temperature", Encoding.UTF8.GetBytes("hello"), MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE, false); 

4、参考文献

https://github.com/mqtt/mqtt.github.io/wiki/libraries 

https://github.com/leytton/m2mqtt (防丢fork)

【转载请注明出处:http://blog.csdn.net/leytton/article/details/51896738

 

  • 6
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 46
    评论
MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,常用于物联网设备之间的通信。在C#中使用MQTT协议,可以通过引入第三方库来实现。 一个常用的MQTT库是M2Mqtt,下面是一个使用M2Mqtt库的C#代码示例: 首先,你需要在项目中引入M2Mqtt库。你可以通过NuGet包管理器来安装M2Mqtt库。 然后,你可以使用以下代码来连接到MQTT服务器、发布消息和订阅主题: ```csharp using System; using System.Text; using uPLibrary.Networking.M2Mqtt; using uPLibrary.Networking.M2Mqtt.Messages; class Program { static void Main(string[] args) { // 创建一个MQTT客户实例 MqttClient client = new MqttClient("broker.mqtt-dashboard.com"); // 注册连接成功的回调函数 client.MqttMsgConnected += Client_MqttMsgConnected; // 注册接收消息的回调函数 client.MqttMsgPublishReceived += Client_MqttMsgPublishReceived; // 连接到MQTT服务器 client.Connect(Guid.NewGuid().ToString()); // 订阅主题 client.Subscribe(new string[] { "topic1" }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE }); // 发布消息 string message = "Hello, MQTT!"; client.Publish("topic1", Encoding.UTF8.GetBytes(message), MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE, false); // 等待用户输入,保持程序运行 Console.ReadLine(); // 断开与MQTT服务器的连接 client.Disconnect(); } private static void Client_MqttMsgConnected(object sender, MqttMsgConnectEventArgs e) { Console.WriteLine("Connected to MQTT broker."); } private static void Client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e) { string message = Encoding.UTF8.GetString(e.Message); Console.WriteLine("Received message: " + message); } } ``` 上述代码中,我们首先创建了一个MqttClient实例,然后注册了连接成功和接收消息的回调函数。接着,我们使用client.Connect方法连接到MQTT服务器,并使用client.Subscribe方法订阅了一个主题。最后,我们使用client.Publish方法发布了一条消息,并通过Console.ReadLine方法等待用户输入,以保持程序运行。当接收到消息时,会触发Client_MqttMsgPublishReceived回调函数。
评论 46
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值