You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu Docker镜像中Paho C++ MQTT客户端无法连接Mosquitto(Python正常)

Docker Ubuntu容器中C++ MQTT客户端连接失败问题

问题已持续数日,仅在Ubuntu Docker容器环境下复现,本地Linux机器无此问题。架构内所有组件均运行于Docker容器本地网络,使用官方Ubuntu镜像,已安装python3及C++工具。

Mosquitto Broker配置

当前运行Mosquitto 2.0.15,配置如下:

listener 1883
protocol mqtt
allow_anonymous true
log_dest file /home/user/mosquitto.log

无安全认证的MQTT broker运行在默认端口1883,已配置日志文件用于调试。

Python客户端情况

采用最简方式连接,代码片段如下:

...
self.mqtt_client = mqtt.Client(client_id="Client Id")
self.mqtt_client.connect("localhost", 1883, 6000)
...
self.mqtt_client.loop_start()
...

该客户端可正常连接broker,订阅、发布功能均正常,且broker日志中能记录其连接尝试。

C++客户端问题

同样采用最简实现,代码片段如下:

...
mqtt::async_client MQTTClient("tcp://localhost:1883", "Another Client Id");
MQTTClient.connect()->wait();
...

每次尝试连接均失败,报错信息:

terminate called after throwing an instance of 'mqtt::exception'
  what():  MQTT error [-1]: TCP/TLS connect failure
Aborted (core dumped)

尽管报错提示SSL/TLS错误,但实际是无法找到broker的通用错误(本地机器停止broker时也会出现相同错误)。开启verbose模式的broker日志中,未记录C++客户端的任何连接尝试。

已尝试的排查操作

  • 更换连接broker的IP地址:localhost/127.0.0.1/0.0.0.0
  • 修改监听端口
  • 指定MQTT版本
  • 使用strace调试客户端
  • 验证C++客户端版本与本地机器一致

以上操作均未解决问题,推测可能与Docker的TCP套接字处理机制有关,现寻求问题原因分析及调试建议。

内容的提问来源于stack exchange,提问作者asergio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 21:40:25