首页 > 其他分享 >关于MQTT的调研

关于MQTT的调研

时间:2024-10-23 11:45:48浏览次数:6  
标签:MqttClient string topic M2Mqtt MQTT client 关于 调研

MQTT也可以理解成是一种消息队列。但是区别其它的消息队列,MQTT主要是针对低带宽高延迟的环境设计的,所以比较适合一些物联网的设备使用。相对来说也会比较轻量一点。MQTT也针对物联网领域的安全方便做了一些设计。

EMQX

在EMQX(https://cloud.emqx.com/console/)注册了一个免费的服务。
官方C#语言推荐用M2Mqtt来连接服务器。
用M2Mqtt来连接免费的测试服务器,能够正常成功。
示例教程:
https://docs.emqx.com/zh/cloud/latest/connect_to_deployments/c_sharp_sdk.html

但是用M2Mqtt来连接自己的服务端,一直连接不成功。

目前已经调研成功,主要是修改一下一行代码:
MqttClient client = new MqttClient(broker, port, true, MqttSslProtocols.TLSv1_2, null, null);

M2Mqtt

安装:

Install-Package M2Mqtt

示例代码:

using uPLibrary.Networking.M2Mqtt;
using uPLibrary.Networking.M2Mqtt.Messages;

string broker = "a88b8b81.ala.cn-hangzhou.emqxsl.cn";
int port = 8883;
string topic = "Csharp/mqtt";
string clientId = Guid.NewGuid().ToString();
string username = "你的用户名";
string password = "你的密码";
MqttClient client = ConnectMQTT(broker, port, clientId, username, password);
Subscribe(client, topic);
Publish(client, topic);

static MqttClient ConnectMQTT(string broker, int port, string clientId, string username, string password)
{
    MqttClient client = new MqttClient(broker, port, true, MqttSslProtocols.TLSv1_2, null, null);
    client.Connect(clientId, username, password);
    if (client.IsConnected)
    {
        Console.WriteLine("Connected to MQTT Broker");
    }
    else
    {
        Console.WriteLine("Failed to connect");
    }
    return client;
}

static void Publish(MqttClient client, string topic)
{
    int msg_count = 0;
    while (true)
    {
        System.Threading.Thread.Sleep(1 * 1000);
        string msg = "messages: " + msg_count.ToString();
        client.Publish(topic, System.Text.Encoding.UTF8.GetBytes(msg));
        Console.WriteLine("Send `{0}` to topic `{1}`", msg, topic);
        msg_count++;
    }
}

static void Subscribe(MqttClient client, string topic)
{
    client.MqttMsgPublishReceived += client_MqttMsgPublishReceived;
    client.Subscribe(new string[] { topic }, new byte[] { MqttMsgBase.QOS_LEVEL_AT_MOST_ONCE });
}

static void client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e)
{
    string payload = System.Text.Encoding.Default.GetString(e.Message);
    Console.WriteLine("Received `{0}` from `{1}` topic", payload, e.Topic.ToString());
}

标签:MqttClient,string,topic,M2Mqtt,MQTT,client,关于,调研
From: https://www.cnblogs.com/wzwyc/p/18496045

相关文章

  • 关于联网交互
    进程间的通讯经常需要走网络。网络的交互方式有很多,最基础的就是Socket,.NET平台还封装了TcpListener和TcpClient,跟Socket相差不大,属于简单封装。另外我们公司常用的交互方式还有ZeroMQ和RabbitMQ。其实C++那边用ZeroMQ比较多。C++开发经常也开前后台,有人负责前台的界面部分,可能......
  • C#关于WebSocket的使用
    因为主要做CS开发,所以之前没怎么涉及WebSocket的使用。前面有个项目,想着前端能不能直接跟我这边交互,所以研究了一下.NET的WebSocket的使用。客户端连接客户端的连接相对比较简单,可以直接使用ClientWebSocket即可。示例代码:usingSystem.Net.WebSockets;usingSystem.Threadin......
  • 推荐一些关于计算机网络和 TCP/IP 协议的书籍
    以下是一些关于计算机网络和TCP/IP协议的优秀书籍推荐:《TCP/IP详解》:作者为W.RichardStevens,这是一套经典之作,分为三卷。《TCP/IP详解卷1:协议》:详细解析了TCP/IP协议的工作原理和实现细节,对协议族中的各个层次和协议,如IP、TCP、UDP等进行了深入剖析,适合想......
  • 关于软件开发中UI相关的问题
    因为个人的使用习惯,我现在经常是笔记本+显示器的使用方式。然后家里用的是27寸的4K显示器,显示器的缩放比例一般是设置成150%。使用的过程中发现很多的软件,在UI显示上都会出现一些问题。主要是两点:1、多屏/横竖屏。一些软件在有多个显示屏,特别是几个显示屏的分辨率不一样,或者有横......
  • 6个关于JavaScript的超级技巧
    对象属性简写问题:将变量分配给对象属性可能会重复。解决方案:使用属性简写来简化对象创建。动态属性名称问题:使用动态属性名称创建对象可能很冗长。解决方案:使用计算属性名称动态创建对象属性。数组方法:map()、、filter()和reduce()问题:对数组进行迭代可能会重复。解决方案......
  • 关于我、重生到500年前凭借C语言改变世界科技vlog.8——函数递归
    文章目录1.递归的介绍2.递归的限制条件3.递归实战应用3.1求n的阶乘3.2顺序打印一个整数的每一位4.递归与迭代5.递归经典问题的拓展希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力!1.递归的介绍在vlog.2的printf函数的返回值举例中,我们使......
  • 2024/10/22日 日志 --》关于Maven的基础学习 笔记整理
    今天正式步入Maven的学习,以下是基本的笔记整理。点击查看代码--Maven--·Maven是专门用于管理和构建Java项目的工具,它的主要功能有:--·提供了一套标准化的项目结构--·提供了一套标准化的构建流程(编译,测试,打包,发布...)--·提供了一套依赖管理机制--·......
  • MQTTnet 4.3.7.1207 (最新版)使用体验,做成在线客服聊天功能,实现Cefsharp的物联的功能(如
    一、MQTTnet4.3.x版本客户端将客户端集成到cefsharp定制浏览器中,实现物联网功能网上很多代码是3.x版本代码,和4.x版本差异性较大,介绍较为简单或不系统二、部分代码说明初始化,初始化》连接服务端》发布上线信息(遗嘱)ConnectAsync等订阅主题:SubscribeAsync......
  • 参观和调研内蒙包头工业园区有感
     参观和调研内蒙包头工业园区有感 有幸参加包头市科学技术局举办的走进工业园区活动,活动的主要宗旨:深入实施创新驱动发展战略,以创新为关键引擎塑造城市发展新动能,引导企业关键核心技术研发和产品开发,促进科技成果转化,促成企业间技术交流及达成合作。(1)第一个走访的企......
  • 关于Workbench命令流的插入
    引言Workbench虽然自身的功能强大,但是有些功能还需要插入命令流实现:(1)命令流可以实现材料模型的定义和部分单元的控制;(2)命令流可以实现对接触对的实常数和关键字的控制;(3)命令流可以实现对求解的补充控制;(4)命令流可以补充后处理的功能。1、前处理的插入命令KEYOPT,ITY......