c# 使用MQTT进行数据传输
2021/5/7 12:26:37
本文主要是介绍c# 使用MQTT进行数据传输,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.引入MQTTnet.dll
本例引用版本为3.0.15.0,运行环境为.net Framework 4.6.1, 如版本更新,请参考最新官方文档:https://github.com/chkr1011/MQTTnet/wiki/
2.创建mqttServer
private IMqttServer MqttServer; private MqttServerOptionsBuilder MqttServerOptions; MqttServerOptions = new MqttServerOptionsBuilder() .WithDefaultEndpointBoundIPAddress(IPAddress.Parse(“192.168.1.1”))//ip .WithDefaultEndpointPort(1883) //端口号 .WithConnectionValidator(c => { if (c.ClientId.Length < 10) { c.ReasonCode = MqttConnectReasonCode.ClientIdentifierNotValid; return; } if (c.Username != "Username") //用户名 { c.ReasonCode = MqttConnectReasonCode.BadUserNameOrPassword; return; } if (c.Password != "Password") //密码 { c.ReasonCode = MqttConnectReasonCode.BadUserNameOrPassword; return; } logger.Info($"{c.ClientId}连接成功!"); c.ReasonCode = MqttConnectReasonCode.Success; }); MqttServer = new MqttFactory().CreateMqttServer(); MqttServer.StartAsync(MqttServerOptions.Build()); MqttServer.UseApplicationMessageReceivedHandler(e => { var payload = e.ApplicationMessage.ConvertPayloadToString(); logger.Info($"主题:{e.ApplicationMessage.Topic}"); logger.Info($"信息:{payload}"); });
3.创建客户端并发布主题
var MqttClient = new MqttFactory().CreateMqttClient(); var mqttOptions = new MqttClientOptions() { ClientId = "Client1", ChannelOptions = new MqttClientTcpOptions() { Server = "192.168.1.1", Port = 1883 }, Credentials = new MqttClientCredentials() { Username ="Username", Password = "Password" }, CleanSession = false, KeepAlivePeriod = TimeSpan.FromSeconds(65535), KeepAliveSendInterval = TimeSpan.FromSeconds(60), CommunicationTimeout = TimeSpan.FromSeconds(30) }; var result = MqttClient.ConnectAsync(mqttOptions).Result; if (result.ResultCode == MqttClientConnectResultCode.Success) { logger.Info("连接成功"); } else { logger.Info("连接失败"); } var result1 = MqttClient .PublishAsync("topic", "内容1", MqttQualityOfServiceLevel.AtMostOnce, false).Result; if (result1.ReasonCode == MQTTnet.Client.Publishing.MqttClientPublishReasonCode.Success) { logger.info("发送成功"); }else { logger.info("发送失败"); } MqttClient.UseDisconnectedHandler(async e => { logger.Info("Disconnected >>Disconnected Server"); await Task.Delay(TimeSpan.FromSeconds(5)); try { await MqttClient.ConnectAsync(mqttOptions); } catch (Exception exp) { logger.Info("Disconnected >>Exception" + exp.Message); } });
这篇关于c# 使用MQTT进行数据传输的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具