请帮助我了解如何将 mosquitto 服务器连接到模拟器中的应用程序。在 Windows 中使用 mosquitto 代理。无法使用系统的 IP 地址将 mosquitto 服务器连接到模拟器。我可以在 cmd 中看到这两个端口作为侦听端口。
TCP 127.0.0.1:1883 和 TCP [::1]:1883
我已经在应用程序中添加了 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();
}
}
});
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 发行说明
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句