Android studio 无法将MOSQUITO MQTT命令作为来自Android客户端的MQTT消息发送到MQTT代理

Android studio 无法将MOSQUITO MQTT命令作为来自Android客户端的MQTT消息发送到MQTT代理,android-studio,mqtt,mosquitto,paho,Android Studio,Mqtt,Mosquitto,Paho,我正试图从Paho MQTT Android客户端以MQTT消息的形式向Mosquitto MQTT代理发送一个命令,在Android studio中使用以下代码行。因为我需要MQTT代理将收到的MQTT消息从Android客户端发布到所有其他客户端 publish(client,"mosquitto_pub -h 192.34.63.138 -t fromApp -m "Turn" -d "); 给出的错误是“无法解析符号“Turn”和;或)expec

我正试图从Paho MQTT Android客户端以MQTT消息的形式向Mosquitto MQTT代理发送一个命令,在Android studio中使用以下代码行。因为我需要MQTT代理将收到的MQTT消息从Android客户端发布到所有其他客户端

publish(client,"mosquitto_pub -h 192.34.63.138 -t fromApp -m "Turn" -d ");
给出的错误是“无法解析符号“Turn”和;或)expected”。而MOSQUITO MQTT代理的publish命令的语法需要一个用倒逗号括起来的MQTT消息。当我发送的MQTT消息没有使用倒逗号时,MQTT代理确实会接收它,但不会对命令进行操作,而我认为它至少应该给出这样的错误,而不是mosquitto_pub命令的正确语法

publish(client,"mosquitto_pub -h 192.34.63.138 -t fromApp -m Turn -d ");
更新


实际上,我问这个问题是因为在开发MQTT应用程序时,我无法应用它的基本操作。我认为,为了使代理能够将收到的MQTT消息发布到其他客户机,我需要在从客户机发送到代理的MQTT消息中包含publish命令。在收到回答后,我了解到MQTT代理会自动将所有接收到的消息发布到其所有客户机,MQTT代理已经订阅了这些客户机的主题。然后,客户端需要订阅这些消息主题才能接收消息。我希望这一解释将帮助那些刚刚开始开发基于MQTT的物联网应用程序的人。

您的方法存在许多问题

首先,编译时错误是因为您将
嵌套在一个字符串中(该字符串由
绑定)。为此,您需要使用
\
进行转义,如下所示:

"mosquitto_pub -h 192.34.63.138 -t fromApp -m \"Turn\" -d "
第二个问题更为重要,MQTT的工作方式与您期望的不一样

您不会向代理发送命令让其执行,而是将一个客户机的消息发布到一个主题,然后代理将该消息传递给订阅该主题的所有客户机。因此,在这种情况下,您只需发布一条消息,并使用有效负载
转到主题
fromApp
。这将比如:

MqttMessage message = new MqttMessage("Turn".getBytes());
sampleClient.publish("fromApp", message);