MQTT服务器/MQTT_C#客户端/Websoket连MQTT

在这里插入图片描述

1 . 搭建MQTT服务器

找到上传中的 emqx-5.3.2-windows-amd64 打开bin如下:
链接: emqx-5.3.2-windows-amd64
安装后会在服务中有一个emqx_5.3.2的服务
如果安装失败 在上传中找到链接: VC_redist.x64.exe 安装。
正确后在浏览器输入 http://127.0.0.1:18083 会有如下mqtt服务端管理页面:
在这里插入图片描述
进入客户端认证,创建一个服务端池。里面设置用户名密码。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
c# 中 mqtt 客户端端口用 ip :1883
websoket 端口用 8083

c# 客户端连接

管理NuGet程序包 添加mqttnet
管理NuGet程序包 添加mqttnet
界面
在这里插入图片描述

using MQTTnet;
using MQTTnet.Core;
using MQTTnet.Core.Client;
using MQTTnet.Core.Packets;
using MQTTnet.Core.Protocol;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace WindowsFormsApplication1
{public partial class Form1 : Form{private MqttClient mqttClient = null;public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){}//连接方法private async Task ConnectMqttServerAsync(){if (mqttClient == null){mqttClient = new MqttClientFactory().CreateMqttClient() as MqttClient;//创建客户端mqttClient.ApplicationMessageReceived += MqttClient_ApplicationMessageReceived;//接收订阅数据mqttClient.Connected += MqttClient_Connected;//连接成功后mqttClient.Disconnected += MqttClient_Disconnected;//连接不成功}try{var options = new MqttClientTcpOptions{Server = textBox5.Text,// "172.16.6.133",Port =Convert.ToInt32(textBox7.Text),// 1883,ClientId = Guid.NewGuid().ToString().Substring(0, 5),//这个只要不重复就行UserName = textBox3.Text,// "yado",Password = textBox6.Text // "yado123"};await mqttClient.ConnectAsync(options);//根据参数连接}catch (Exception ex){Invoke((new Action(() => {txtReceiveMessage.AppendText($"连接到MQTT服务器失败!" + Environment.NewLine + ex.Message + Environment.NewLine);})));}}//成功连接回调private void MqttClient_Connected(object sender, EventArgs e){Invoke((new Action(() => {txtReceiveMessage.AppendText("已连接到MQTT服务器!" + Environment.NewLine);})));}//断开回调private void MqttClient_Disconnected(object sender, EventArgs e){Invoke((new Action(() => {txtReceiveMessage.AppendText("已断开MQTT连接!" + Environment.NewLine);})));}//接收到订阅消息private void MqttClient_ApplicationMessageReceived(object sender, MqttApplicationMessageReceivedEventArgs e){Invoke((new Action(() => {txtReceiveMessage.AppendText($">> {Encoding.UTF8.GetString(e.ApplicationMessage.Payload)}{Environment.NewLine}");})));}//点击连接private void button3_Click(object sender, EventArgs e){Task.Run(async () => { await ConnectMqttServerAsync(); });}//发布主题private void button1_Click(object sender, EventArgs e){try{string topic = textBox1.Text.Trim();if (string.IsNullOrEmpty(topic)){MessageBox.Show("发布主题不能为空!");return;}string inputString = textBox2.Text.Trim();var appMsg = new MqttApplicationMessage(topic, Encoding.UTF8.GetBytes(inputString), MqttQualityOfServiceLevel.AtMostOnce, false);mqttClient.PublishAsync(appMsg);}catch (Exception ex) {MessageBox.Show(ex.Message);}}//订阅private void button2_Click(object sender, EventArgs e){string topic = textBox4.Text.Trim();if (string.IsNullOrEmpty(topic)){MessageBox.Show("订阅主题不能为空!");return;}if (!mqttClient.IsConnected){MessageBox.Show("MQTT客户端尚未连接!");

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/858106.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDEA Plugins中搜索不到插件解决办法

IDEA中搜不到插件有三种解决方案: 设置HTTP选项,可以通过File->Settings->Plugins->⚙->HTTP Proxy Settings进行设置 具体可参考这篇博文:IDEA Plugins中搜索不到插件解决办法本地安装,ile->Settings->Plugin…

机器学习数学原理专题——线性分类模型:损失函数推导新视角——交叉熵

目录 二、从回归到线性分类模型:分类 3.分类模型损失函数推导——极大似然估计法 (1)二分类损失函数——极大似然估计 (2)多分类损失函数——极大似然估计 4.模型损失函数推导新视角——交叉熵 (1&#x…

安徽理工大学2计算机考研情况,招收计算机专业的学院和联培都不少!

安徽理工大学(Anhui University of Science and Technology),位于淮南市,是安徽省和应急管理部共建高校,安徽省高等教育振兴计划“地方特色高水平大学”建设高校,安徽省高峰学科建设计划特别支持高校&#…

react实现导航守卫

React本身并没有像Vue那样的直接名为“导航守卫”的概念,但在React Router中,我们可以通过特定的方法和技术来模拟和实现类似的功能。以下是对React Router中模拟导航守卫的详解: 1. 导航守卫的概念 导航守卫:在路由切换之前执行…

C#中[StructLayout(LayoutKind.Sequential, Pack = 1)]解释

在C#中,[StructLayout(LayoutKind.Sequential, Pack 1)]属性用于控制结构体或类的字段在内存中的布局。让我们分解一下这个属性的每个部分意味着什么: StructLayout: 这个属性指定结构体或类字段在内存中的排列方式。LayoutKind.Sequential表示字段应该…

国产测温速度快且功耗低的温度传感芯片MY18E20可Pin-Pin替换DS18B20

MY18E20是一款国产高精度可编程的数字模拟混合信号温度传感芯片;感温原理基于CMOS半导体PN节温度与带隙电压的特性关系,经过小信号放大、模数转换、数字校准补偿后,数字总线输出,具有精度高、一致性好、测温快、功耗低、可编程配置…

Python+Pytest+Yaml+Request+Allure接口自动化测试框架详解

PythonPytestYamlAllure整体框架目录(源代码请等下篇) 框架详解 common:公共方法包 –get_path.py:获取文件路径方法 –logger_util.py:输出日志方法 –parameters_until.py:传参方式方法封装 –requests_util.py:请求方式方法封…

Web渗透-文件包含漏洞

一、简介 在程序员开发过程中,通常会把可重复使用的函数写到单个文件中,在使用某些函数时,直接调用此文件,无需在此编写,这种调用文件的过程一般被称为文件包含。随着网站业务的需求,程序开发人员一般希望…

什么是深度神经网络?与深度学习、机器学习、人工智能的关系是什么?

什么是深度神经网络?与深度学习、机器学习、人工智能的关系是什么? 🤖什么是深度神经网络?与深度学习、机器学习、人工智能的关系是什么?摘要引言正文内容1. 什么是深度神经网络?🧠1.1 深度神经…

如何占领消费者科技心智?这家中国企业给出标准答案

品牌的价值是什么? 沃伦巴菲特和查理芒格曾提出过著名的“护城河”模型,将品牌作为一家公司构建护城河的基本要素之一。 按照巴菲特的说法:“你会试着去创建一个跟迪士尼竞争的品牌吗?可口可乐这个品牌让人联想到世界各地畅饮可…

Cadence 16.6与17.4个人学习版推荐

一. 简介与下载 Cadence个人学习版是基于Cadence官方发行的安装包做了适当精简和优化的二次打包版本,包括了Cpature原理图设计、PSpice 电路仿真以及Allegro PCB设计等以电子产品设计为主的主要功能,能满足绝大部分硬件工程师的使用需求。 学习版预先已…

nacos 简述 安装运行

一、下载 官网:Redirecting to: https://nacos.io/ 文档:Nacos 快速开始 github地址:GitHub - alibaba/nacos: an easy-to-use dynamic service discovery, configuration and service management platform for building cloud native applications. 下载nacos server(tips:也…

【Gradio】Custom Components | Gradio组件关键概念 后端

Gradio组件关键概念 在本节中,我们将讨论Gradio中组件的一些重要概念。在开发自己的组件时,理解这些概念非常重要。否则,您的组件可能会与其他Gradio组件的行为大不相同! ✍️ 提示:如果你熟悉Gradio库的内部机制&…

达梦8 通过日志解释数据守护系统的关停顺序

关闭守护系统时,必须按照一定的顺序来关闭守护进程和数据库实例。特别是自动切换模式,如果退出守护进程或主备库的顺序不正确,可能会引起主备切换,甚至造成守护进程组分裂。 官方推荐通过在监视器执行stop group命令关闭守护系统…

ALOS 12.5m DEM下载

1、下载地址 阿拉斯加遥感数据下载地址:https://search.asf.alaska.edu/ ; 数据详情描述见地址:https://asf.alaska.edu/datasets/daac/alos-palsar-radiometric-terrain-correction/ ; 2、下载步骤 2.1、勾绘研究区 在网站中…

以太坊==windows电脑本地搭建一个虚拟的以太坊环境

提供不同的选择,适合不同需求和技术水平的开发者: Geth:适合需要与主网兼容或构建私有网络的开发者。Ganache:适合快速开发和测试智能合约的开发者,特别是初学者。Docker:适合需要快速、可重复搭建环境的开…

OpenWRT Linux, bridge概念解释

bridge简介 在 OpenWrt Linux 系统中,bridge(网桥)的概念通常指的是在数据链路层(OSI 模型的第2层)实现连接和数据转发的虚拟网络设备。它的主要作用是将多个网络接口(例如 LAN 口、WLAN 等)连接在一起,使它们在逻辑上组成一个单一的网段,并在其间转发数据包。 具体介绍 网桥…

笔记-python reduce 函数

reduce() 函数在 python 2 是内置函数, 从python 3 开始移到了 functools 模块。 官方文档是这样介绍的 reduce(...) reduce(function, sequence[, initial]) -> valueApply a function of two arguments cumulatively to the items of a sequence, from left …

C语言之IO流函数

文章目录 1 IO 函数1.1 错误函数1.1.1 检测流上的错误函数ferror1.1.2 复位错误标志函数clearerr 1.2 结束函数1.2.1 检测文件结束符函数feof1.2.2 清除文件缓冲区函数fflush 1.3 处理文件函数1.3.1 文件的打开与关闭函数fopen,fclose1.3.2 替换文件中数据流函数freopen1.3.3 文…

树状数组维护区间种类数

[SDOI2009] HH的项链 题目描述 HH 有一串由各种漂亮的贝壳组成的项链。HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH 不断地收集新的贝壳,因此,他的项链变得越来…