Я пытался отправить некоторую информацию с помощью MQTT со встроенного устройства (считывателя RFID). Это устройство передает данные очень часто (~ 25-30 данных в секунду). Когда я запускаю процесс в устройстве, он работает без проблем в течение ~ 9-10 часов. Затем процесс завершается, и при проверке журналов он говорит:
cleaning in abortwrite for socket 5
Failed to connect, return code -1
cleaning in abortwrite for socket 4
Failed to connect, return code -1
Эта проблема связана с MQTT или какой-либо памятью? Может ли кто-нибудь помочь мне с этим?
Пожалуйста, найдите приведенный ниже код Я использовал
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "MQTTClient.h"
int main()
{
MQTTClient client;
MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer;
MQTTClient_message pubmsg = MQTTClient_message_initializer;
MQTTClient_deliveryToken token;
int rc;
MQTTClient_create(&client, "tcp://mqtt1.mindlogic.com:1883", "ExampleClientPub",
MQTTCLIENT_PERSISTENCE_NONE, NULL);
conn_opts.keepAliveInterval = 20;
conn_opts.cleansession = 1;
if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS)
{
printf("Failed to connect, return code %d\n", rc);
exit(EXIT_FAILURE);
}
pubmsg.payload = buf;
pubmsg.payloadlen = (int)strlen(buf);
// pubmsg.payloadlen = sizeof *antenna_id;
pubmsg.qos = 1;
pubmsg.retained = 0;
MQTTClient_publishMessage(client, "mqtt-ex", &pubmsg, &token);
printf("Waiting for up to %d seconds for publication of %s\n""on topic %s for client with ClientID: %s\n",(int)(10000L/1000), "Hello World!", "MQTT-Examples", "ExampleClientPub");
rc = MQTTClient_waitForCompletion(client, token, 10000L);
printf("Message with delivery token %d delivered\n", token);
MQTTClient_disconnect(client, 10000);
MQTTClient_destroy(&client);
}