He estado programando un app para monitorear una flotilla usando MQTT. Todo iba muy bien estaba programando en ubuntu 24 LTS y Qt Creator, pero a la hora de querer probarla en windows no se conectaba al broker, esto era muy raro ya que en Linux estaba funcionando perfectamente.
Depurando encontre que mosqpp::mosquittopp::connect_async estaba retornando 15, un "Lookup error", en vez de cero que seria lo optimo, estuve googleando y no encontraba ningun caso igual, probe montones de cosas, como por ejemplo:
- Compilar diferente version de mosquitto
- Usar la distribucion binaria
- Conectar a otros brokers
- Usar la ip publica del broker directamente
- Cambiar el DNS de windows
- Cambiar la configuracion de red de Windows
#include "ws2tcpip.h" | |
int main() { | |
addrinfo hints = {}, *res; | |
hints.ai_family = AF_INET; | |
int status = getaddrinfo("test.mosquitto.org", nullptr, &hints, &res); | |
if (status != 0) { | |
std::cerr << "getaddrinfo failed: " << gai_strerror(status) << std::endl; | |
} else { | |
std::cout << "getaddrinfo succeeded" << std::endl; | |
} | |
return 0; | |
} |
mosqpp::lib_init();atexit([](){mosqpp::lib_cleanup();});