初探物联网协议之MQTT

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();
		}
	}
}


猜你喜欢

转载自blog.csdn.net/a445849497/article/details/61922469