MQTT ISSUE: Брокер закрывает соединение при отправке пакета

Это мой первый пост здесь. Поправьте меня если я ошибаюсь

Я использую контроллер свободного масштаба с модулем G620 для подключения к серверу. Я начал реализовывать MQTT-клиент.

Связь с модулем G620 GPRS через UART. Через AT команды я подключился к MQTTbroker. Как только я отправил пакет подключения, брокер закрывает соединение. Нужна помощь или предложение.

Пакет подключения: { 0x10,0x12,0x00,0x04,M,Q,T,T,0x04,0x00,0x3C,0x00,0x00,0x06,Z,1,2,1,2,3 }

1 ответ

Решение

Существует два сценария, по которым сервер отключает вас согласно протоколу MQTT.
1. Если вы нарушаете формат протокола
2. Если превышено время ожидания соединения

Причины прекращения нарушения протокола:
- Возможно, вы ошибочно выделили некоторые байты протокола. Перепроверьте с документом протокола.
- Возможно, вы уже подключены и пытаетесь подключиться снова. Проверьте наличие журналов на стороне сервера, если у вас есть доступ.
- Поскольку вы отправляете кадр через UART, вы могли использовать цикл for для отправки байтов. Если счетчик цикла for основан на "strlen(Connectpacket)", вы не получите точный счет, так как "strlen" завершится после 0x00. Таким образом, сервер получит половину пакета и отключит вас за нарушение.

Ваш протокол кажется недействительным,
0x10 - Тип пакета управления MQTT
0x12 - оставшаяся длина
0x00 - длина MSB
0x04 - длина LSB
M Q T T - Название протокола
0x04 - Уровень протокола
0x00 - Соединить флаги
0x3C - Keep Alive MSB
0x00 - Keep Alive LSB
0x00,0x06, Z, 1,2,1,2,3 - Для чего используются байты? Перепроверьте с документом протокола.

Установите бит чистого сеанса равным 1. Установите для активности 0x00 MSB 0x3C LSB.

Другие вопросы по тегам