mqtt java的代码
时间: 2023-07-09 21:32:24 浏览: 52
以下是使用Eclipse Paho Java客户端库实现MQTT接入的示例代码:
```java
import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
public class Main {
public static void main(String[] args) throws MqttException {
String broker = "tcp://localhost:1883"; // MQTT服务器地址和端口号
String clientId = "JavaClient"; // 客户端ID
MemoryPersistence persistence = new MemoryPersistence(); // 消息持久化方式
// 创建MQTT客户端实例
MqttClient client = new MqttClient(broker, clientId, persistence);
MqttConnectOptions connOpts = new MqttConnectOptions();
connOpts.setCleanSession(true);
// 连接MQTT服务器
System.out.println("Connecting to broker: " + broker);
client.connect(connOpts);
System.out.println("Connected");
// 订阅主题
String topic = "test/topic";
int qos = 1;
System.out.println("Subscribing to topic \"" + topic + "\" with QoS " + qos);
client.subscribe(topic, qos);
// 发布消息
String content = "Hello, world!";
MqttMessage message = new MqttMessage(content.getBytes());
message.setQos(qos);
System.out.println("Publishing message: " + content);
client.publish(topic, message);
// 接收消息
client.setCallback(new MqttCallback() {
public void connectionLost(Throwable cause) {}
public void messageArrived(String topic, MqttMessage message) throws Exception {
System.out.println("Message arrived: " + new String(message.getPayload()));
}
public void deliveryComplete(IMqttDeliveryToken token) {}
});
// 等待接收消息
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 断开连接
client.disconnect();
System.out.println("Disconnected");
}
}
```
上述代码首先创建了一个MQTT客户端实例,然后连接了本地的MQTT服务器,并订阅了名为"test/topic"的主题。接着发布了一条消息到该主题,并通过回调函数接收并处理消息。最后,等待一段时间后断开连接。需要注意的是,该代码需要引入Eclipse Paho Java客户端库,可以通过Maven等方式导入。