MQTT 协议 Client ID 长度不能超过23个字符(MqttException: MQIsdp ClientId > 23 bytes)

今天遇到一个MQTT的问题,MqttException: MQIsdp ClientId > 23 bytes

ClientId的长度大于23时,无法链接MQTT服务器。

经过查看协议发现:客户端标识符(Client ID)是介于1和23个字符长度,客户端到服务器的唯一标识。它必须在搜有客户端连接到一台服务器是唯一的,是在处理QoS级别1和2的消息ID中的关键。如果客户端ID包含23个字符,服务器响应CONNECT消息,通过一个CONNACK,返回码2:标识符被拒绝。

英文原版的协议中是这样描述的:

E文不行,好像是说开始的版本有23个字符的限制,后来的版本可以超过23字符了。

不过最新的Mosquitto只支持到了3.1.1,无奈只能改ClientId的规则,不超过23字符。

时间: 2024-08-30 05:20:54

MQTT 协议 Client ID 长度不能超过23个字符(MqttException: MQIsdp ClientId > 23 bytes)的相关文章

MQTT 协议 Client ID 长度不能超过23个字符

今天遇到一个MQTT的问题,MqttException: MQIsdp ClientId > 23 bytes ClientId的长度大于23时,无法链接MQTT服务器. 经过查看协议发现:客户端标识符(Client ID)是介于1和23个字符长度,客户端到服务器的唯一标识.它必须在搜有客户端连接到一台服务器是唯一的,是在处理QoS级别1和2的消息ID中的关键.如果客户端ID包含23个字符,服务器响应CONNECT消息,通过一个CONNACK,返回码2:标识符被拒绝. 英文原版的协议中是这样描述

自己动手实现MQTT协议

写在前面 前段时间弄IoT相关的东西,系统学习了一下 MQTT 协议,在此分享出来. 本文先是对 MQTT 协议做了简单的介绍:接着是对 MQTT协议的内容做了较为全面的解读:最后使用 Python 语言去实现一个简单的 MQTT 客户端和服务器. 简介 MQTT 全称是 Message Queue Telemetry Transport,翻译成中文意思是"遥测传输协议".它最先是由IBM提出,是一种基于 TCP 协议,具有简单.轻量等优点,特别适合于受限环境(带宽低.网络延迟高.网络

MQTT协议(二)

1. 长连接 互联网推送消息主要基于通信双方建立长连接,从而实现实时推送效果.普通的socket连接对服务器的消耗太大,所以出现了类似MQTT这种轻量级.低消耗的协议来维护长连接.维护长连接需要采用心跳机制,客户端发送一个心跳数据包给服务器,服务器返回给客户端一个心跳应答,从而完成一次客户端-服务器握手,这个握手是让双方都知道他们之间的连接是没有断开的.如果超过一个时间阈值,客户端没有收到服务器的心跳应答,或者服务器没有收到客户端的心跳请求,那么表示通信双方连接已经不存在.对客户端来说,则断开与

MQTT协议笔记之连接和心跳

前言 本篇会把连接(CONNECT).心跳(PINGREQ/PINGRESP).确认(CONNACK).断开连接(DISCONNECT)和在一起. CONNECT 像前面所说,MQTT有关字符串部分采用的修改版的UTF-8编码,CONNECT可变头部中协议名称.消息体都是采用修改版的UTF-8编码.前面基本上可变头部内容不多,下面是一个较为完整的CONNECT消息结构:   Description 7 6 5 4 3 2 1 0 Fixed header/固定头部     Message Typ

MQTT协议

简介: MQTT协议(Message Queuing Telemetry Transport),翻译过来就是遥信消息队列传输,是IBM公司于1999年提出的,现在最新版本是3.1.1.MQTT是一个基于TCP的发布订阅协议,设计的初始目的是为了极有限的内存设备和网络带宽很低的网络不可靠的通信,非常适合物联网通信. MQTT的网络层级 工作原理: 发布订阅示意图 如上图所示,客户端A连接到消息代理(message broker),消息代理返回确认消息.客户B发布消息温度25度,客户A订阅‘温度’,

MQTT协议简记

 一.定义 MQTT - MQ Telemetry Transport 轻量级的 machine-to-machine 通信协议. publish/subscribe模式. 基于TCP/IP. 支持QoS. 适合于低带宽.不可靠连接.嵌入式设备.CPU内存资源紧张. 是一种比较不错的Android消息推送方案. FacebookMessenger采用了MQTT. MQTT有可能成为物联网的重要协议. MQTT是轻量级基于代理的发布/订阅的消息传输协议,它可以通过很少的代码和带宽和远程设备连接.例

物联网协议测评平台——吊兰使用指南-MQTT协议 Python Paho

在忙了一个周末之后,还是小有成果的.发布了一个简单的物联网平台: http://mqtt.phodal.com,简单地写一下使用指南. CoAP协议 使用Libcoap的话可以用 <code style="box-sizing: border-box; font-family: Consolas, Menlo, Monaco, 'Courier New', monospace; font-size: 1em; padding: 0px; color: inherit; border-top

Mqtt协议IOS端移植1

MQTTClient.h #import <Foundation/Foundation.h> @protocol MQTTDelegate <NSObject> /** * @brief 连接服务器 * * @param [in] N/A * @param [out] N/A * @return void * @note */ - (void) didConnect: (NSUInteger)code; /** * @brief 与服务器断开连接 * * @param [in] N

IBM MQTT协议基本资料

原文链接:http://37iot.com/topic/5565a193d2dd2fc71da04f7c 初次听说MQTT还是在学习Android消息推送的时候,只是粗浅的了解,未曾深究.最近专注于IOT开发,在信息传递方面自然就想到了它. 相关资料: MQ 遥测传输 (MQTT) V3.1 协议规范:http://www.ibm.com/developerworks/cn/webservices/ws-mqtt/index.html 开源的mosquitto项目地址:http://mosqui