初探物联网协议之MQTT

来源:互联网 发布:php curl exec 不输出 编辑:程序博客网 时间:2024/05/17 15:05

1.什么是MQTT

https://zhuanlan.zhihu.com/p/20888181

2.MQTT的框架模式


3.MQTT的Java(paho)实现之Hello World

服务器端:

import java.util.Arrays;import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;import org.eclipse.paho.client.mqttv3.MqttCallback;import org.eclipse.paho.client.mqttv3.MqttClient;import org.eclipse.paho.client.mqttv3.MqttConnectOptions;import org.eclipse.paho.client.mqttv3.MqttException;import org.eclipse.paho.client.mqttv3.MqttMessage;import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;public class MTest {public static void main(String[] args) {int qos = 2;//设置服务质量String broker = "tcp://*:1883";MemoryPersistence persistence = new MemoryPersistence();try {MqttClient sampleClient = new MqttClient(broker, "mtest",persistence);MqttConnectOptions connOpts = new MqttConnectOptions();connOpts.setCleanSession(true);System.out.println("Connecting to broker: " + broker);sampleClient.connect(connOpts);sampleClient.subscribe("backTest");//订阅主题System.out.println("Connected");System.out.println("Publishing message: hello i am mtest");//发布消息MqttMessage message = new MqttMessage("Publishing message: hello i am mtest".getBytes());message.setQos(qos);sampleClient.publish("MQTT Examples", message);System.out.println("Message published");sampleClient.setCallback(new MqttCallback() {            @Override            public void connectionLost(Throwable cause) { //Called when the client lost the connection to the broker             }            @Override            public void messageArrived(String topic, MqttMessage message) throws Exception {                System.out.println(topic + ": " + new String(message.getPayload(),"UTF-8"));            }            @Override            public void deliveryComplete(IMqttDeliveryToken token) {//Called when a outgoing publish is complete             }        });} catch (MqttException me) {System.out.println("reason " + me.getReasonCode());System.out.println("msg " + me.getMessage());System.out.println("loc " + me.getLocalizedMessage());System.out.println("cause " + me.getCause());System.out.println("excep " + me);me.printStackTrace();}}}


客户端:

import java.util.Arrays;import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken;import org.eclipse.paho.client.mqttv3.MqttCallback;import org.eclipse.paho.client.mqttv3.MqttClient;import org.eclipse.paho.client.mqttv3.MqttConnectOptions;import org.eclipse.paho.client.mqttv3.MqttException;import org.eclipse.paho.client.mqttv3.MqttMessage;import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;public class STest {public static void main(String[] args) {String broker = "tcp://*:1883";//另一端地址MemoryPersistence persistence = new MemoryPersistence();try {final MqttClient sampleClient = new MqttClient(broker, "stest" , persistence);MqttConnectOptions connOpts = new MqttConnectOptions();connOpts.setCleanSession(true);System.out.println("Connecting to broker: " + broker);sampleClient.connect(connOpts);sampleClient.subscribe("MQTT Examples");//订阅主题System.out.println("Connected");sampleClient.setCallback(new MqttCallback() {            @Override            public void connectionLost(Throwable cause) { //Called when the client lost the connection to the broker             }            @Override            public void messageArrived(String topic, MqttMessage message) throws Exception {            System.out.println("i Got the message:");                System.out.println(topic + ": " + new String(message.getPayload(),"UTF-8"));                System.out.println("i Send the message:");    MqttMessage message1 = new MqttMessage("Publishing message:hello , i am stest ".getBytes());    message1.setQos(2);    sampleClient.publish("backTest", message1);    System.out.println("Message published");            }            @Override            public void deliveryComplete(IMqttDeliveryToken token) {//Called when a outgoing publish is complete             }        });} catch (MqttException me) {System.out.println("reason " + me.getReasonCode());System.out.println("msg " + me.getMessage());System.out.println("loc " + me.getLocalizedMessage());System.out.println("cause " + me.getCause());System.out.println("excep " + me);me.printStackTrace();}}}


0 0