[db:标题]

摘要:项目地址:https:github.comhnlyf168DotNet.Framework Install-Package DotNetCN -Version 3.0.0 昨天晚上大致测试了下 ,490个客户端(一个收一个发) 平均
项目地址:https://github.com/hnlyf168/DotNet.Framework Install-Package DotNetCN -Version 3.0.0 昨天晚上大致测试了下 ,490个客户端(一个收一个发) 平均估计每个每秒60个包使用mqtt协议发送一个guid的字符串服务器转发每秒大约1.2-1.3w cpu占用:25%一下 内存好像都在50m以下 1、协议简介   MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。   具体就不在这里记录了,写这个服务端和客户端也只是为了更加深入的学习mqtt协议。 2、mqtt的几种控制报文类型 名字 值 报文流动方向 描述 Reserved 0 禁止 保留 CONNECT 1 客户端到服务端 客户端请求连接服务端 CONNACK 2 服务端到客户端 连接报文确认 PUBLISH 3 两个方向都允许 发布消息 PUBACK 4 两个方向都允许 QoS 1消息发布收到确认 PUBREC 5 两个方向都允许 发布收到(保证交付第一步) PUBREL 6 两个方向都允许 发布释放(保证交付第二步) PUBCOMP 7 两个方向都允许 QoS 2消息发布完成(保证交互第三步) SUBSCRIBE 8 客户端到服务端 客户端订阅请求 SUBACK 9 服务端到客户端 订阅请求报文确认 UNSUBSCRIBE 10 客户端到服务端 客户端取消订阅请求 UNSUBACK 11 服务端到客户端 取消订阅报文确认 PINGREQ 12 客户端到服务端 心跳请求 PINGRESP 13 服务端到客户端 心跳响应 DISCONNECT 14 客户端到服务端 客户端断开连接 Reserved 15 禁止 保留 2.1、协议头     每个MQTT控制报文都包含一个固定报头,          固定报头的格式 Bit 7 6 5 4 3 2 1 0 byte 1 MQTT控制报文的类型 用于指定控制报文类型的标志位 byte 2... 剩余长度     剩余长度的计算方式: 剩余长度(Remaining Length)表示当前报文剩余部分的字节数,包括可变报头和负载的数据。剩余长度不包括用于编码剩余长度字段本身的字节数。 剩余长度字段使用一个变长度编码方案,对小于128的值它使用单字节编码。更大的值按下面的方式处理。低7位有效位用于编码数据,最高有效位用于指示是否有更多的字节。因此每个字节可以编码128个数值和一个延续位(continuation bit)。剩余长度字段最大4个字节 例如,十进制数64会被编码为一个字节,数值是64,十六进制表示为0x40,。十进制数字 321(=65+2*128)被编码为两个字节,最低有效位在前。第一个字节是 65+128=193。注意最高位为1表示后面至少还有一个字节。第二个字节是2。
阅读全文