服务端下载地址:https://download.csdn.net/download/horseroll/11012231

MQTT是什么?

MQTT (Message Queue Telemetry Transport),翻译成中文就是,遥测传输协议,其主要提供了订阅/发布两种消息模式,更为简约、轻量,易于使用,特别适合于受限环境(带宽低、网络延迟高、网络通信不稳定)的消息分发,属于物联网(Internet of Thing)的一个标准传输协议。

为什么使用MQTT 协议?

MQTT(英语全称,Message Queue Telemetry Transport),中文翻译过来就是遥测传输协议:其主要提供订阅/发布模式,更为简约、轻量,易于使用,针对受限环境(带宽低、网络延迟高、网络通信不稳定),属于物联网(Internet of Thing)的一个传输协议。设计思想是开放、简单、轻量、易于实现。这些特点使它适用于受限环境。例如,但不仅限于此:

  • 特别适合于网络代价昂贵,带宽低、不可靠的环境。

  • 能在处理器和内存资源有限的嵌入式设备中运行。

  • 使用发布/订阅消息模式,提供一对多的消息发布,从而解除应用程序耦合。

  • 使用 TCP/IP 提供网络连接。

  • 提供Last Will 和 Testament 特性通知有关各方客户端异常中断的机制。

对消息中间件,估计大家不得不关心的就是消息的可靠性,也就是消息的发布服务质量,可喜的是,MQTT支持三种消息发布服务质量(QoS):

  • “至多一次”(QoS==0),消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。

  • “至少一次”(QoS==1),确保消息到达,但消息重复可能会发生。

  • “只有一次”(QoS==2),确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。小型传输,开销很小(固定长度的头部是 2 字节),协议交换最小化,以降低网络流量。

如何使用MQTT?

演示新建一个MQTT客户端来接收服务器端发送的信息

1.首先在程序中程序集中引用M2Mqtt,在NUGET程序包管理器搜索M2Mqtt即可

2.新建MqttClientService类

public class MqttClientService{private static volatile MqttClientService _instance = null;private static readonly object LockHelper = new object();/// <summary>/// 创建单例模式/// </summary>/// <param name="ipAddress"></param>/// <returns></returns>public static MqttClientService CreateInstance(string ipAddress){if (_instance == null){lock (LockHelper){if (_instance == null)_instance = new MqttClientService(ipAddress);}}return _instance;}/// <summary>/// 实例化订阅客户端/// </summary>public MqttClient SubscribeClient { get; set; }public Action<Object, MqttMsgPublishEventArgs> ClientPublishReceivedAction { get; set; }public MqttClientService(string ipAddress){// create client instance SubscribeClient = new MqttClient(IPAddress.Parse(ipAddress));// register to message received SubscribeClient.MqttMsgPublishReceived += client_MqttMsgPublishReceived;string clientId = Guid.NewGuid().ToString();SubscribeClient.Connect(clientId);// subscribe to the topic "/home/temperature" with QoS 2 SubscribeClient.Subscribe(new string[] { "avatar/uploaded" }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE });}void client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e){// handle message received ClientPublishReceivedAction.Invoke(sender, e);}public void client_MqttMsgPublish(string publishString){SubscribeClient.Publish("avatar/signed", Encoding.UTF8.GetBytes(publishString), MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE, false);}}

3.在主程序中进行新建客户端,对服务端进行连接,新建监听事件

private void Form1_Load(object sender, EventArgs e){// create client instance //MqttClient client = new MqttClient(IPAddress.Parse("192.168.0.23"));MqttClient client = new MqttClient("m2m.eclipse.org");// register to message received client.MqttMsgPublishReceived += client_MqttMsgPublishReceived;string clientId = Guid.NewGuid().ToString();client.Connect(clientId);// subscribe to the topic "/home/temperature" with QoS 2 client.Subscribe(new string[] { "home/garden/fountain2" }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE });}static void client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e){// handle message received byte[] b = e.Message;string str = System.Text.Encoding.Default.GetString(b);}

C#创建MQTT客户端接收服务器信息相关推荐

  1. MQTT客户端连接服务器协议,mqtt客户端和服务器长连接

    mqtt客户端和服务器长连接 内容精选 换一换 介绍设置客户端和服务器的安全认证方式的相关参数.参数说明:表明与服务器建立链接后,不进行任何操作的最长时间.参数类型:USERSET取值范围:整型,0- ...

  2. modbus 客户端获取服务器信息,客户端modbus访问服务器过程

    客户端modbus访问服务器过程 内容精选 换一换 MySQL官网提供了针对不同操作系统的客户端安装包,以5.6为例.单击此处下载MySQL最新版本,单击此处下载其他归档版本.下面将以Red Hat ...

  3. 使用java开发MQTT客户端接收消息

    1.搭建好MQTT服务器,可以参考EMQX企业版试用笔记_Three Big Stones的博客-CSDN博客 2.Eclipse下新建一个Maven项目,并引入mqtt客户端java版本包. < ...

  4. dnf一直接收服务器信息失败怎么办,dnf接收频道信息失败

    dnf8个C组队一起打卢克,dnf打卢克没人要怎么办? 虽然说现在DNF卢克的难度不大,但还是有很多玩家去打卢克被踢成皮球,这些玩家就很不服气了,自己明明能打为什么打卢克别人就是不要呢.于是就有玩家自 ...

  5. 客户端与服务器信息交互的流程,客户端与服务器的交互流程

    客户端与服务器的交互流程 内容精选 换一换 ecFlow是一个工作流管理器,使用户可以在受控环境中运行大量程序,彼此之间以及时间上相互依赖.它提供了对硬件和软件故障的容忍度,并具有良好的重启功能.ec ...

  6. 服务器提取用户信息,获取客户端和服务器信息

    运行效果: 前台设计界面: 前台代码: 无标题页 服务器端环境 服务器名称: 服务器的IIS: 服务器的IP地址: 服务器的域名: 服务器的操作系统: 服务器的端口: 服务器的路径: 域名主机: 服务 ...

  7. dnf一直接收服务器信息失败怎么办,DNF近期出现的 接受频道信息失败 解决方法...

    游戏更新,推出新版本,新职业一直是保持游戏经久不衰的必经之路.每次更新都会更玩家们带来不同程度的新鲜感. BUT!从很久很久以前,国服的更新带来的不仅仅是新鲜感,还有各种蛋疼,例如各种卡爆.掉线.还有 ...

  8. 大话西游2接收服务器信息失败,大话西游手游服务器连接失败 无法连接服务器解决步骤_网络-游戏圈...

    大话西游手游连不上服务器怎么办,无法连接服务器怎么办?连不上游戏怎么办?不用急小编为大家分享大话西游手游联网教程,希望可以帮助到大家. 1.服务器维护,官方维护或者出现BUG,也会出现进不了游戏的情况 ...

  9. 大话西游2接收服务器信息失败,大话西游2移民抽签失败十余次 三转玩家怒曝武器...

    原标题:大话西游2移民抽签失败十余次 三转玩家怒曝武器 以下是来自一位预约多次想移民至凌烟阁的玩家的苦逼史,为了移民足足等了90多天,预约失败15次左右,在此他想曝光大话客服的态度,认为客服纯粹是搪塞 ...

最新文章

  1. ASP.NET(C#)常用代码30例
  2. Python使用matplotlib函数subplot可视化多个不同颜色的折线图、为多个子图添加总标题(main title)
  3. android 两种设置全屏的activity方式
  4. VC++格式化输出单个字符和格式化输出十六进制的不同形式
  5. 《Photoshop Lab修色圣典(修订版)》—第1课深入讨论
  6. WPF 右下角弹窗的简单实现
  7. 深入理解InnoDB(4)—索引使用
  8. 2019 阿里Java 4轮面试题,含必考题答案参考!
  9. getchwd() 函数返回当前工作目录。
  10. RTP/RTCP协议详解
  11. 数字电子技术基础(四):门电路(CMOS)必看
  12. 摄动法在计算机中的应用,摄动法及其在电力系统中的应用
  13. 贝尔曼方程基于全期望公式的前期推导
  14. 数据源EPMSSqlDataSource的使用
  15. python爬虫:爬去汽车之家
  16. 免费下载学术论文的网站
  17. 高通平台开发系列讲解(系统篇)coredump
  18. python去除字符串中的空格、特殊字符、指定字符
  19. 事实胜于雄辩,激素性皮炎的治疗激素皮炎的治疗面部激素性皮炎在康本
  20. IP广播分控隐私政策

热门文章

  1. 微服务架构盛行的时代,你需要了解点 Spring Boot
  2. 数据管理DMS企业版接入蚂蚁金融云售卖
  3. 小米KK:智能家居谁能破局?
  4. 《DNS与BIND(第5版)》——4.10 下一步是什么
  5. jquery产品左右滚动js代码
  6. ng-repeat根据多个字段排序
  7. C#------编码规范
  8. 安全专家:恶意软件盯上苹果Mac机用户
  9. 再探C#类与结构体究竟谁快——考虑栈变量、栈分配、64位整数、密封类
  10. 盖茨的背后:坚持到最后一分钟