首页 > 编程知识 正文

mqtt协议详解,mqtt协议

时间:2023-05-05 17:23:27 阅读:44157 作者:3220

要轻松实现MQTT协议,需要本地服务器

下载EMQX,并在本地安装和运行。 与Tomcat服务器类似,但安装过程比Tomcat服务器少,而且简单。

EMQX链接

MQTT协议中文版

java要实现MQTT协议,需要三个类:客户端类、服务端类和回调函数类。

步骤1 :创建maven项目并添加maven依赖关系

ependenciesdependencygroupidorg.eclipse.PAHO/groupidartifactidorg.eclipse.PAHO.client.MQ ttv3/artifactidversionion

importorg.eclipse.PAHO.client.MQ ttv3. *; importorg.eclipse.PAHO.client.MQ ttv3. persist.memory persistence; import java.util.Scanner; publicclassservicemqtt { publicstaticfinalstringhost=' TCP ://localhost :1883 '; 隐私服务id='服务优先'; 隐私字符串主题; 私有mqttclient客户端; 私密性mqtttopic mqtttopic; 私有qttconnectoptionsoptions; 隐私字符串用户=' admin '; 私有字符串密码=' public '; 私有消息消息; public ServiceMQTT () throwsmqttexception(/创建连接客户端=newmqttclient ) host、ServiceID、new MemoryPersistence ) ); options=new MqttConnectOptions (; options.setcleansession(false ); options.setkeepaliveinterval (20; options.setconnectiontimeout (50; options.set username (用户; options.set password (password.tochararray (); 消息=new mqttmessage (; }公共语音获取连接() try )客户端. set callback (newpublishcallback ) ); client.connect (选项; mqttopic=client.gettopic(topic; }catch(mqttexceptione ) { e.printStackTrace ); }公共语音发布(mqttopictopic,MqttMessage message ) throwsmqttexception ) mqttdeliverytokentoken=topic.publish ) System.out.println (消息推送状态---' token.isComplete ) ); } publicstaticvoidmain (字符串[ ] args ) throwsmqttexception ) servicemqttservice=newservicemqtt ); 扫描输入=new扫描程序(system.in ); System.out.print ('请输入消息的主题:'); 服务. topic=input.next (; System.out.print ('请输入消息的内容: String messageVal=input.next (; service.getConnect (; 服务. message.set QoS (1; 服务. message.set retained (true; 服务. message.set payload (message val.getbytes (); 服务. publish (服务. mqttopic,服务. message; System.out.println (消息保留状态(service.message.isRetained ) ); }} 服务端类

importorg.eclipse.PAHO.client.MQ ttv3. *; importorg.eclipse.PAHO.client.MQ ttv3. persist.memory persistence; import java.util.Scanner; publicclassclientmqtt { publicstaticfinalstringhost=' TCP ://localhost :1883 '; 私密性staticfinalstringclientid=' client first '; 隐私字符串主题; 私有mqttclient客户端; 私有qttconnectoptionsoptions; 隐私字符串用户=' admin '; 私有字符串密码=' public '; publicvoidclientstart((try ) client=newmqttclient ) host,clientID,new内存持久性); options=new MqttConnectOptions (; options.setcleansession(true; options.setkeepaliveinterval (10; options.setconnectiontimeout (50; options.set username (用户; options.set password (password.tochararray (); client.set callback (newpublishcallback ) ); 扫描输入=new扫描程序(system.in ); System.out.print ('请输入订阅主题:'); TOPIC=input.next (; mqttopictopic=client.get topic (topic; //setWill方法。 如果需要知道项目中的客户端是否脱机,可以调用此方法。 设置最终端口的通知消息options.setwill(topic,' close'.getBytes ),1,true )。 client.connect (选项; int[] Qos={1}; String[] topic1={TOPIC}; client.subscribe(topic1,Qos ); }catch(mqttexceptione ) { e.printStackTrace ); } publicstaticvoidmain (字符串[ ] args ) throwsmqttexception (clientmqttclientmqtt=newclientmqtt ); clientMQTT.clientStart (; }} 客户端类

importorg.eclipse.PAHO.client.MQ ttv3. imqttdeliverytoken; importorg.eclipse.PAHO.client.MQ ttv3. mqttcallback; importorg.eclipse.PAHO.client.MQ ttv3. mqttmessage; publicclasspublishcallbackimplementsmqttcallback { publicvoidconnectionlost (throwable throwable )//连接中断到此为止的系统. out ! ' ); } publicvoidmessagearrived (strings,MqttMessage mqttMessage ) throwsexception(/subscribe之后到此为止System.out.println ) System.out.println (消息的ID为' mqttMessage.getId ) ); System.out.println (消息内容为' new string (mqttmessage.get payload ) ); } publicvoiddeliverycomplete (imqttdeliverytokenimqttdeliverytoken ) { /{ //publish到此为止为system.out.println ) } thisisisidde

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。