【问题标题】:How to connect mosquitto server to emulator in android studio如何在android studio中将mosquitto服务器连接到模拟器
【发布时间】:2021-09-07 14:45:44
【问题描述】:

请帮助我了解如何将 mosquitto 服务器连接到模拟器中的应用程序。 在 Windows 中使用蚊子代理。无法使用系统的 IP 地址将 mosquitto 服务器连接到模拟器。我可以在 cmd 中看到这两个端口作为监听端口。

TCP 127.0.0.1:1883 和 TCP [::1]:1883

我已经在app中添加了paho的所有依赖、库和服务。

String clientId = MqttClient.generateClientId();
                    mqttAndroidClient = new MqttAndroidClient(MainActivity.this, **"tcp://192.168.0.5:1883"**,clientId);
                    mqttAndroidClient.setCallback(new MqttCallback() {
                        @Override
                        public void connectionLost(Throwable cause) {
                            Log.d("MqttConnection", "Connection Lost!");
                        }
            
                        @Override
                        public void messageArrived(String topic, MqttMessage message) throws Exception {
                            Log.d("Message", topic + ":  + " + new String(message.getPayload()));
                        }
            
                        @Override
                        public void deliveryComplete(IMqttDeliveryToken token) {
                            Log.d("Delivery Complete", "Delivery Complete!");
                        }
                    });
            
                    connectButton.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        MqttConnectOptions mqttConnectOptions = new MqttConnectOptions();
                        mqttConnectOptions.setAutomaticReconnect(true);
                        mqttConnectOptions.setCleanSession(false);
                        try {
                            mqttAndroidClient.connect(mqttConnectOptions,null, new IMqttActionListener() {
                                @Override
                                public void onSuccess(IMqttToken asyncActionToken) {
                                    Log.d("Mqtt Connection","Connection Success!");
                                }
                                @Override
                                public void onFailure(IMqttToken asyncActionToken, Throwable exception) {
                                    Log.d("Mqtt Connection Failure","Failed to connect to: " +serverUri + exception.toString());
                                }
                            });
                        } catch (MqttException e) {
                            e.printStackTrace();
                        }
                    }
                });

【问题讨论】:

    标签: android mqtt mosquitto paho


    【解决方案1】:

    127.0.0.1::1 始终指向运行相关代码的机器,在模拟器的情况下,它是模拟器而不是模拟器运行的主机。

    您可以在此处的文档中找到地址列表:https://developer.android.com/studio/run/emulator-networking

    10.0.2.2 是与模拟器主机通信的正确地址。

    其次,默认情况下,从 v2.0.0 开始,mosquitto 只会监听 localhost,并且不允许没有用户名/密码的连接。您需要传递一个配置文件以启用绑定到请求接口并允许匿名连接的侦听器。

    确保您阅读了 v2.0.0 版本notes

    【讨论】:

      猜你喜欢
      • 2019-01-16
      • 1970-01-01
      • 2016-11-06
      • 2013-01-19
      • 1970-01-01
      • 1970-01-01
      • 2017-08-11
      • 1970-01-01
      • 2015-07-13
      相关资源
      最近更新 更多