MQTT CONNECT标头:如何定义用户名和密码?

时间:2018-06-07 16:04:25

标签: tcp mqtt iot

我正在尝试从功能非常有限的设备向MQTT代理发送数据,因此我需要在通过TCP / IP发送之前手动构建我的请求。

我知道用户名和密码保存在消息有效负载中,但我不明白它们是如何分隔的。标题中给出了总长度,但是当它到达代理时,我看不出它是如何分解成不同的字符串的。

有人可以帮我解决一个有效的CONNECT请求示例以及它的格式化解释吗?

此页面提供了一个似乎有意义的概述,但缺少用户名和密码的任何示例。 http://www.steves-internet-guide.com/mqtt-protocol-messages-overview/

规范文档似乎也没有用,但我可能不会正确地使用它。 http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html#connect

我是Stack Overflow的新手,如果我错过任何内容或错误地表达了我的请求,请告诉我。

由于

1 个答案:

答案 0 :(得分:0)

您正在查看规范的旧版本。

版本3.1.1的完整最新版spec包含如何在此section中对用户名和密码进行编码的定义。

  

这些字符串中的每一个都以两个字节长度字段为前缀,该字段给出了UTF-8编码字符串本身的字节数,如图1.1所示。下面是UTF-8编码字符串的结构。因此,可以在这些UTF-8编码的字符串组件之一中传递的字符串大小有限制;你不能使用一个编码超过65535字节的字符串。

所以你有2个字节(组成一个16位数字)构成字符串的长度,接着是包含实际字符串的那么多字节。

用户名和密码都以这种格式传输。