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

Flutter使用mqtt5_client连接MQTT报错:SocketException主机查找失败

Flutter中mqtt5_client连接失败问题求助

在Flutter项目中使用mqtt5_client库时,安卓物理设备运行出现以下错误:
Exception: SocketException: Failed host lookup: 'tcp://*******:1883' (OS Error: No address associated with hostname, errno = 7)

但在Android Studio中使用Kotlin结合paho库,能够正常建立MQTT连接并发布数据。已在清单文件中添加INTERNET等权限,且从mqtt_client切换到mqtt5_client后问题仍存在,附上相关代码与权限配置,希望得到解决思路。

使用的代码

import 'package:logger/logger.dart';

import 'package:mqtt5_client/mqtt5_client.dart';
import 'package:mqtt5_client/mqtt5_server_client.dart';

class MQTTClientService {
  late MqttServerClient _client;
  var logger = Logger();

  MQTTClientService(String brokerURL, String clientId, int port) {
    _client = MqttServerClient(brokerURL, clientId);
    _client.port = port;
    _client.logging(on: true);
    _client.onConnected = _onConnected;
    _client.onDisconnected = _onDisconnected;
    _client.onUnsubscribed = _onUnsubscribed;
    _client.onSubscribed = _onSubscribed;
    _client.onSubscribeFail = _onSubscribeFail;
    _client.pongCallback = _pong;
    _client.keepAlivePeriod = 60;
  }

  Future<void> establishConnection() async {
    final connectMessage =
        MqttConnectMessage().startClean().withWillQos(MqttQos.atLeastOnce);

    logger.i('MQTT_LOGS::Mosquitto client connecting....');

    _client.connectionMessage = connectMessage;

    try {
      await _client.connect();
    } catch (e) {
      logger.e('Exception: $e');
      _client.disconnect();
    }

    if (_client.connectionStatus!.state == MqttConnectionState.connected) {
      logger.i('MQTT_LOGS::Mosquitto client connected');
    } else {
      logger.i(
          'MQTT_LOGS::ERROR Mosquitto client connection failed - disconnecting, status is ${_client.connectionStatus}');

      _client.disconnect();
    }
  }

  void subscribeToTopic(String topic) {
     // code to subscribe
  }

  void publishMessage(String topic, String message) {
   // code to publish
  }

  void terminateClientConnection() {
    _client.disconnect();
  }

  void _onConnected() {
    logger.i('MQTT_LOGS:: Connected');
  }

  void _onDisconnected() {
    logger.i('MQTT_LOGS:: Disconnected');
  }

  void _onSubscribed(MqttSubscription subscription) {
    logger.i('MQTT_LOGS:: Subscribed topic: ${subscription.topic}');
  }

  void _onSubscribeFail(MqttSubscription subscription) {
    logger.i('MQTT_LOGS:: Failed to subscribe ${subscription.topic}');
  }

  void _onUnsubscribed(MqttSubscription? subscription) {
    if (subscription != null) {
      logger.i('MQTT_LOGS:: Unsubscribed topic: ${subscription.topic}');
    }
  }

  void _pong() {
    logger.i('MQTT_LOGS:: Ping response client callback invoked');
  }
}

当前配置的权限

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:53:14