ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c# 使用MQTT进行数据传输

2021-05-07 10:02:42  阅读:708  来源: 互联网

标签:Info MqttClient c# ReasonCode MQTT new var 数据传输 logger


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);
                    }
                });


 

 

标签:Info,MqttClient,c#,ReasonCode,MQTT,new,var,数据传输,logger
来源: https://blog.csdn.net/c_haoo/article/details/116045304

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有