Пытаюсь сделать обработку запросов от клинетов по определенному порту
Для теста использую netcat. при первом обращении происходит все правильно : сервер выдает ответ и разрывает соединение. При повторном обращении (даже не изменив ни байта в строке). Происходит разрыв соединения без вывода ответа. При третьем соединении просто виснет.
Мои подозрения на то, что я не правильно делаю разрыв соединения клиента и что то где то подвисает. Кто нибудь может что либо прокомментировать?
Код:
if (mqttTCPServer->hasClient()) {
if (!mqttClient || !mqttClient.connected()) {
if (mqttClient) {
mqttClient.stop();
Serial.printf(c_s_ClientStop, c_mqtt_client);
}
mqttClient = mqttTCPServer->available();
Serial.printf(c_s_ClientNew, c_mqtt_client);
mqttClient.flush(); // clear input buffer, else you get strange characters
}
}
delay(0);
packet_mqtt_size = 0;
while (mqttClient.available()) { // get data from Client
packet_mqtt_size = mqttClient.read((uint8_t*)packet_mqtt_buffer, _MQTT_BUFF_MAX_SIZE - 1);
// Serial.printf("Size:%d\r\n", packet_mqtt_size);
packet_mqtt_buffer[packet_mqtt_size] = 0;
//Serial.printf(c_s_ClientStop, c_mqtt_client);
// Serial.println(packet_mqtt_buffer);
if ((packet_mqtt_size > 0)) {
if (parseBuff()){
delay(0);
mqtt_execute2(sec_valid_cnt);
Serial.println("out exec");
delay(0);
}
}
delay(0);
mqttClient.write((char*)packet_mqtt_buffer, packet_mqtt_size);
mqttClient.stop();
delay(0);
}
Мои подозрения на то, что я не правильно делаю разрыв соединения клиента и что то где то подвисает. Кто нибудь может что либо прокомментировать?