mosquittopp: опубликовать сообщение брокеру

#c #c #mqtt #mosquitto

#c #c #mqtt #mosquitto

Вопрос:

Я использую cpp-оболочку для mosquitto под Linux.
После инициализации:

 this->keepalive = 60;   
this->id = id;
this->port = port;
this->host = host;
this->topic = topic;
mosquittopp::log_init(MOSQ_LOG_ALL, MOSQ_LOG_STDOUT);
const int result = connect(host, port, keepalive);
  

как я могу опубликовать свое пользовательское сообщение?

Я использую метод публикации, определенный оболочкой таким образом:

 int publish(uint16_t *mid, const char *topic, uint32_t payloadlen=0, const uint8_t *payload=NULL, int qos=0, bool retain=false);
  

Итак, я могу вызвать таким образом:

 publish(NULL, topic, strlen(message));
  

но.. где я могу указать реальное «сообщение»?

Комментарии:

1. Из документации mosquitto: » полезная нагрузка: указатель на данные для отправки. Если payloadlen > 0, это должно быть допустимое местоположение в памяти. » Я бы сказал, что payload должен быть указатель на допустимую строку payloadlen размера.

Ответ №1:

Здесь вы можете добавить пример кода для примера публикации на c http://www.disk91.com/2013/technology/programming/mosquitto-c-sample-code-to-publish-message /

Ответ №2:

Вы можете использовать его как,

 publish(NULL, topic, strlen(message), message);
  

для того, чтобы была идея, [взято из примера mosquitto temp_conv]

 temp_farenheit = temp_celsius*9.0/5.0   32.0;
snprintf(buf, 50, "%fn", temp_farenheit);
publish(NULL, "temperature/celsius", strlen(buf), buf);