paho mqtt c++怎么使用

paho mqtt c++怎么使用,第1张

它是一个基于Java的Eclipse桌面客户端程序,其底层的和MQTT服务器进行的交互的java类库就是Eclipse Paho java库。
假设我们在本机(127001)已经启动了一个mosquitto MQTT服务器,其端口为1883。

1、下载Apollo服务器,下载后解压,然后运行apache-apollo-16\bin\apollocmd,输入createmybroker(名字任意取,这里是根据官网介绍的来取的)创建服务器实例,服务器实例包含了所有的配置,运行时数据等,并且和一个服务器进程关联。2、createmybroker之后会在bin目录下生成mybroker文件夹,里面包含有很多信息,其中etc\apolloxml文件下是配置服务器信息的文件,etc\usersproperties文件包含连接MQTT服务器时用到的用户名和密码,后面会介绍,可以修改原始的admin=password,可以接着换行添加新的用户名密码。3、打开cmd,运行…apache-apollo-16\bin\mybroker\bin\apollo-brokercmdrun开启服务器,可以在浏览器中输入查看是否安装成功,该界面展示了topic,连接数等很多信息。经过上面的简单步骤,服务器基本上就已经完成,下一篇将介绍Android客户端的编写和注意事项。客户端使用的API,开始我使用的是mqtt-client,使用过后发现问题百出,不能很好的满足要求,后来使用了官方推荐的EclipsePaho,下面开始客户端代码的编写,为了方便测试这里有android和j2se两个工程:1、新建android工程MQTTClient2、MainActivity代码如下:[java]viewplaincopyprintpackageldwmqttclient;importjavautilconcurrentExecutors;importjavautilconcurrentScheduledExecutorService;importjavautilconcurrentTimeUnit;importorgeclipsepahoclientmqttv3IMqttDeliveryToken;importorgeclipsepahoclientmqttv3MqttCallback;importorgeclipsepahoclientmqttv3MqttClient;importorgeclipsepahoclientmqttv3MqttConnectOptions;importorgeclipsepahoclientmqttv3MqttException;importorgeclipsepahoclientmqttv3MqttMessage;importorgeclipsepahoclientmqttv3persistMemoryPersistence;importandroidappActivity;importandroidosBundle;importandroidosHandler;importandroidosMessage;importandroidviewKeyEvent;importandroidwidgetTextView;importandroidwidgetToast;publicclassMainActivityextendsActivity{privateTextViewresultTv;privateStringhost="tcp://127001:1883";privateStringuserName="admin";privateStringpassWord="password";privateHandlerhandler;privateMqttClientclient;privateStringmyTopic="test/topic";privateMqttConnectOptionsoptions;privateScheduledExecutorServicescheduler;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){superonCreate(savedInstanceState);setContentView(Rlayoutmain);resultTv=(TextView)findViewById(Ridresult);init();handler=newHandler(){@OverridepublicvoidhandleMessage(Messagemsg){superhandleMessage(msg);if(msgwhat==1){ToastmakeText(MainActivitythis,(String)msgobj,ToastLENGTH_SHORT)show();Systemoutprintln("-----------------------------");}elseif(msgwhat==2){ToastmakeText(MainActivitythis,"连接成功",ToastLENGTH_SHORT)show();try{clientsubscribe(myTopic,1);}catch(Exceptione){eprintStackTrace();}}elseif(msgwhat==3){ToastmakeText(MainActivitythis,"连接失败,系统正在重连",ToastLENGTH_SHORT)show();}}};startReconnect();}privatevoidstartReconnect(){scheduler=ExecutorsnewSingleThreadScheduledExecutor();schedulerscheduleAtFixedRate(newRunnable(){@Overridepublicvoidrun(){if(!clientisConnected()){connect();}}},01000,101000,TimeUnitMILLISECONDS);}privatevoidinit(){try{//host为主机名,test为clientid即连接MQTT的客户端ID,一般以客户端唯一标识符表示,MemoryPersistence设置clientid的保存形式,默认为以内存保存client=newMqttClient(host,"test",newMemoryPersistence());//MQTT的连接设置options=newMqttConnectOptions();//设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录,这里设置为true表示每次连接到服务器都以新的身份连接optionssetCleanSession(true);//设置连接的用户名optionssetUserName(userName);//设置连接的密码optionssetPassword(passWordtoCharArray());//设置超时时间单位为秒optionssetConnectionTimeout(10);//设置会话心跳时间单位为秒服务器会每隔1520秒的时间向客户端发送个消息判断客户端是否在线,但这个方法并没有重连的机制optionssetKeepAliveInterval(20);//设置回调clientsetCallback(newMqttCallback(){@OverridepublicvoidconnectionLost(Throwablecause){//连接丢失后,一般在这里面进行重连Systemoutprintln("connectionLost----------");}@OverridepublicvoiddeliveryComplete(IMqttDeliveryTokentoken){//publish后会执行到这里Systemoutprintln("deliveryComplete---------"+tokenisComplete());}@OverridepublicvoidmessageArrived(StringtopicName,MqttMessagemessage)throwsException{//subscribe后得到的消息会执行到这里面Systemoutprintln("messageArrived----------");Messagemsg=newMessage();msgwhat=1;msgobj=topicName+"---"+messagetoString();handlersendMessage(msg);}});//connect();}catch(Exceptione){eprintStackTrace();}}privatevoidconnect(){newThread(newRunnable(){@Overridepublicvoidrun(){try{clientconnect(options);Messagemsg=newMessage();msgwhat=2;handlersendMessage(msg);}catch(Exceptione){eprintStackTrace();Messagemsg=newMessage();msgwhat=3;handlersendMessage(msg);}}})start();}@OverridepublicbooleanonKeyDown(intkeyCode,KeyEventevent){if(client!=null&&keyCode==KeyEventKEYCODE_BACK){try{clientdisconnect();}catch(Exceptione){eprintStackTrace();}}returnsuperonKeyDown(keyCode,event);}@OverrideprotectedvoidonDestroy(){superonDestroy();try{schedulershutdown();clientdisconnect();}catch(MqttExceptione){eprintStackTrace();}}}由于项目需要,我用到了心跳重连。根据这里的解释设置apolloxml,主要有设置主机连接的地址。另外,options还有个setWill方法,如果项目中需要知道客户端是否掉线可以调用该方法。

Eclipse Paho MQTT工具是一个基于Java的Eclipse桌面客户端程序,其底层的和MQTT服务器进行的交互的java类库就是Eclipse Paho java库。假设我们在本机(127001)已经启动了一个mosquitto MQTT服务器,其端口为1883

最近三个同时发行的版本都有Agent Modeling Platform,但是自Kepler以来,就没有代码更改了。 这可能是项目经理Miles Parker迁至由Mylyn项目经理Mik Kersten于2012年初创立的Tasktop公司的最新结果。
露娜项目
该图显示了项目数量(左栏)和数百万行代码(右栏)。 Luna是同时发布的项目,数量最多。
即使使用SCA工具 ( 服务组件体系结构工具 )(顶级SOA平台(面向服务的体系结构)的子项目),自开普勒以来几乎没有代码更改。
自2013年10月以来,Persistence和ORM框架EclipseLink中的代码更改数量急剧下降。
Eclipse建模框架
在此同步发行中首次亮相的八个Eclipse项目中,有许多都使用Eclipse Modeling Framework(EMF):
使用Sirius,可以非常简单地为特定于域的EMF模型创建图形编辑。 编辑是数据的(部分)视图,显示为图形并可以更改。 自去年5月起,Sirius由法国Obeo公司开发。 这也是Eclipse项目,以前是Obeo的一部分,在Luna的10版中可用。 Arduino Designer是另一个不错的应用程序。 这是一个针对儿童的基于Eclipse的开发环境,感谢Sirius,这台小型Arduino计算机可以进行图形编程。
还请参见: Eclipse,NetBeans或IntelliJ:哪个是最好的Java IDE?
通过定义数据模型与表面之间的映射和绑定, EMF Client Platform 13使得SWT,JavaFX和/或Web应用程序可以用于修改EMF数据。 EMF表单是一个核心组件,可用于创建基于表单的编辑器。 还有两个带有EMF数据的桌面应用程序可以代替Innoopract解决方案使用:Sphinx 08 von itemis和来自Obeo的Sirius中使用的扩展编辑框架(EEF)。
EMFStore 13的开发由Innoopract进行。 这是一个版本管理框架,专门为EMF模型设计,用于检测和合并不同版本的模型之间的冲突。 EMFStore与CDO模型库直接竞争,该库包含在Luna的43版中。
业务流程模型
项目业务流程模型和表示法(BPMN2)将BPMN(业务流程的图形表示形式)实现为EMF模型。 对象管理小组(OMG)于2011年初发布了20版。该实现可以说是成熟的,在去年仅进行了很小的修改,并将版本增加到10。
BPMN2 Modeler 102是用于在BPMN 20中创建和编辑业务流程和工作流的图形编辑器。 在Eclipse中,曾经有一个BPMN Modeller项目在2011年末存档。由Red Hat或JBoss运行的BPMN2 Modeller自2011年中以来一直是Eclipse项目,因此与BPMN Modeller项目并存了半年。与其他开发商。 除了Java之外,基于BPMN2 Modeller的整个技术栈都是Luna的一部分:上述BPMN2和Graphiti基于图形建模框架(GMF),而后者又基于图形编辑框架(GEF) )和EMF。
Paho,QVTd和XWT
Paho以Java,C / C ++,JavaScript,Python和Go提供了MQTT(消息队列遥测传输)协议的实现。 在机器对机器领域中,该协议被称为物联网。 自2012年以来,Paho只是一个Eclipse项目,而Java实现在Luna的10版中。
QVTd (QVT声明式)与可 *** 作QVT和ATL(阿特拉斯转换语言)一起是三个模型到模型转换(MMT)子项目之一。 这三个都在使用Luna。 查询视图转换(QVT)是对象管理组的规范,由 *** 作,关系和核心部分组成。 QVTd当前是Core实施的一部分。 QVTd团队希望在一年内填补关系和核心方面的空白,并为每种QVT语言提供一个封闭的工具链,包括编辑器,解析器,模型,执行器,调试器和代码生成器。
使用XWT ,可以用XML声明性地定义SWT / JFace表面(包括数据绑定)。 也可以使用Windows构建器(也可以在Luna中找到)以图形方式完成。 XWT在项目e4中启动了Eclipse 4x实验室。 XWT尚未成为Eclipse 4x的一部分,自2012年底以来,它已成为一个单独的项目。 Luna带来了XWT的10版,Papyrus(另一个Luna项目)也支持该版本。
伊恩·布尔(Ian Bull)在Luna上最新项目和功能的年度十大倒计时已再次发布,非常值得一读。 作为Eclipse的一般信息来源,Foundation的YouTube频道和JAX TV的博客聚合者是planeteclipseorg ,也值得一试。

你好,
1、 下载Apollo服务器,下载后解压,然后运行apache-apollo-16\bin\apollocmd,输入create mybroker(名字任意取,这里是根据 官网 介绍的来取的)创建服务器实例,服务器实例包含了所有的配置,运行时数据等,并且和一个服务器进程关联。
2、create mybroker之后会在bin目录下生成mybroker文件夹,里面包含有很多信息,其中etc\apolloxml文件下是配置服务器信息的文件,etc\usersproperties文件包含连接MQTT服务器时用到的用户名和密码,后面会介绍,可以修改原始的admin=password,可以接着换行添加新的用户名密码。
3、打开cmd,运行…apache-apollo-16\bin\mybroker\bin\apollo-brokercmd run 开启服务器,可以在浏览器中输入 >1、在这里下载Apollo服务器,下载后解压,然后运行apache-apollo-16\bin\apollocmd,输入create mybroker(名字任意取,这里是根据官网介绍的来取的)创建服务器实例,服务器实例包含了所有的配置,运行时数据等,并且和一个服务器进程关联。
2、create mybroker之后会在bin目录下生成mybroker文件夹,里面包含有很多信息,其中etc\apolloxml文件下是配置服务器信息的文件,etc\usersproperties文件包含连接MQTT服务器时用到的用户名和密码,后面会介绍,可以修改原始的admin=password,可以接着换行添加新的用户名密码。
3、打开cmd,运行…apache-apollo-16\bin\mybroker\bin\apollo-brokercmd run 开启服务器,可以在浏览器中输入>Eclipse Paho MQTT工具是一个基于Java的Eclipse桌面客户端程序,其底层的和MQTT服务器进行的交互的java类库就是Eclipse Paho java库。假设我们在本机(127001)已经启动了一个mosquitto MQTT服务器,其端口为1883。如何使用 Eclipse Paho MQTT工具?
(1) 下载Eclipse Paho MQTT
>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13435816.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-05
下一篇 2023-08-05

发表评论

登录后才能评论

评论列表(0条)

保存