Заголовок MQTT CONNECT: как определить имя пользователя и пароль? - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь отправить данные брокеру 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 голосов
/ 07 июня 2018

Вы просматриваете старую версию спецификации.

Полная версия spec для версии 3.1.1 содержит определение того, как должны кодироваться имя пользователя и пароль.в этом разделе .

Каждая из этих строк имеет префикс с двухбайтовым полем длины, которое дает число байтов в самой кодированной строке UTF-8, как показано на рисунке1.1 Структура UTF-8 кодированных строк ниже.Следовательно, существует ограничение на размер строки, которая может быть передана в одном из этих компонентов строки в кодировке UTF-8;Вы не можете использовать строку, которая будет кодироваться более чем 65535 байтов.

Таким образом, у вас есть 2 байта (составляющих 16-битное число), которые составляют длину строки, а затем столько байтов, содержащихфактическая строка.

И имя пользователя, и пароль передаются в этом формате.

...