C# 使用M2Mqtt库开发MQTT通信协议

直接上代码:

第一步:使用NugGet 安装 M2Mqtt 工具,选择最新版本即可;

第二步:输入服务器的IP 及端口,创建客户端:

cs 复制代码
        MqttClient client;
        public MqttApi()
        {
            // MQTT服务器IP地址
            string host = "172.16.60.122";
            int serverPort = 1883;
            // 实例化Mqtt客户端 
            client = new MqttClient(host, Convert.ToInt32(serverPort), false, null, null, MqttSslProtocols.TLSv1_2);
        }

第三步:设置主题,订阅主题,然后发送信息

cs 复制代码
   public void SendProgram()
   {
       // MQTT的主题 topic  设备类型
       string topic = "/fac/sensor/data";

       string clientId = Guid.NewGuid().ToString();
       client.Connect(clientId, "admin", "admin123");  // 设置用户名和密码(如果需要)

       // 订阅主题 "/mqtt/test", 订阅质量 QoS 2 
       client.Subscribe(new string[] { topic }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE });

       // 发布消息
       //var msg = "{\"deviceCode\":\"SM001\",\"Program\":{\"ProgramName\":\"ee\",\"WaferMappingFileName\":\"rr\"}}";
       var msg = "{\"deviceCode\":\"SM001\",\"devicestatusInfo\":{\"description\":\"停止\",\"descriptioncode\":2,\"devicestatus\":1,\"preDeviceStatus\":\"\",\"preStatusStartTime\":\"\",\"remark\":\"\",\"statusStarTime\":1712651038054}}";

      var res=  client.Publish(topic, Encoding.UTF8.GetBytes(msg), MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE, false);

       // 处理消息接收事件(现在 回复消息 可以不订阅这个主题)
       client.MqttMsgPublishReceived += Client_MqttMsgPublishReceived;
   }

   public void Client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e)
   {
       string message = Encoding.UTF8.GetString(e.Message);
       Console.WriteLine($"Mqtt Received: {message}");
   }

完成。

相关推荐
草莓熊Lotso6 分钟前
【Linux网络】深入理解Linux IO多路复用:select服务器完善、内核原理与poll实战
linux·运维·服务器·c语言·网络·c++
XH华40 分钟前
Linux系统第二章:常见的Linux指令(上)
linux·运维·服务器
nVisual1 小时前
01-环境监控集成方案
运维·服务器·开发语言·网络·数据库·数据中心布线·综合布线管理软件
早点睡啊Y1 小时前
精读 LangChain 官方文档(三):
服务器·数据库·langchain
fanstuck7 小时前
1M 上下文能怎么用?我用 Seed Evolving 做了一个招标文件版本差异审查器
服务器·人工智能·数据分析·开源·aigc
FoldWinCard11 小时前
D5 Linux 网络及端口命令
linux·运维·服务器
kirs_ur11 小时前
SSD 在 AI 训练中的角色
大数据·服务器·人工智能
tedcloud12312 小时前
OmniRoute怎么部署?开源AI模型路由平台Linux部署教程
linux·服务器·人工智能·开源·音视频
霸道流氓气质12 小时前
KMS 密钥管理服务(Key Management Service)原理与实践
linux·服务器·数据库
kirs_ur12 小时前
CXL(Compute Express Link)— 内存扩展的未来
服务器·数据库·性能优化