蚂蚁文库
换一换
首页 蚂蚁文库 > 资源分类 > PDF文档下载
 

mqttcclient实现消息推送入门指引

  • 资源ID:54769766       资源大小:231.72KB        全文页数:15页
  • 资源格式: PDF        下载权限:游客/注册会员    下载费用:10积分 【人民币10元】
快捷注册下载 游客一键下载
会员登录下载
三方登录下载: 微信快捷登录 QQ登录  
下载资源需要10积分 【人民币10元】
邮箱/手机:
温馨提示:
支付成功后,系统会自动生成账号(用户名和密码都是您填写的邮箱或者手机号),方便下次登录下载和查询订单;
支付方式: 微信支付    支付宝   
验证码:   换一换

 
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,既可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰   

mqttcclient实现消息推送入门指引

MQTT C Client 实现消息推送(入门指南) MQTT (Message Queuing Telemetry Transport, 消息队列 遥测传输)是 IBM 开发的一个即时通讯协议,通过 MQTT 协议,目前已经扩展出了数十个 MQTT 服务器端程序,可以 通过 PHP,JAVA,Python,C,C等系统语言来向 MQTT 发 送相关消息。随着移动互联网的发展,MQTT 由于开放源代 码,耗电量小等特点,将会在移动消息推送领域会有更多的 贡献,在物联网领域,传感器与服务器的通信,信息的收集, MQTT 都可以作为考虑的方案之一。 在未来 MQTT 会进入到 我们生活的各各方面。The Paho MQTT C Client is a fully fledged MQTT client written in ANSI standard C. It avoids C in order to be as portable as possible. A C layer over this library is also available in Paho. 目录 何为 MQTT 生成 dll 库混合编程 MQTT C Client 实战 Synchronous publication example Asynchronous publication example Asynchronous subscription example 何为 MQTT MQTT 主要用于服务端对客户端进行消息推送,根据这个具 体要求,很容易知道它包括两个部分客户端、服务端。 MQTT 消息推送是基于主题 topic 模式的,可以分开来说 客户端发布一条消息时,必须指定消息主题。 (如,topic” 天气”,payload”北京今天雾霾好大啊呜呜” ) ,其中 topic 就是主题,payload 是发送的具体内容。 服务端推送消息,也是基于主题的。当服务器发现有主题 (如,topic“天气” )时,就会给所有订阅该主题的客户端 推送 payload 内容。 这里需要个前提,就是有客户端订阅 topic”天气”这个主 题; 一旦客户端订阅该主题,服务端就会每收到该主题的消息, 都会推送给订阅该主题的客户端。如果客户端不需要关注该 主题了,也就是说不想接受到这样的推送消息了,只要取消 otpic”天气”的主题订阅即可。 MQTT 协议是为大量计算能力有限,且工作在低带宽、不可 靠的网络的远程传感器和控制设备通讯而设计的协议,它具 有以下主要的几项特性 使用发布/订阅消息模式,提供一对多的消息发布,解除应用 程序耦合; 对负载内容屏蔽的消息传输; 使用 TCP/IP 提供网络连接; 有三种消息发布服务质量 “至多一次” ,消息发布完全依赖底层 TCP/IP 网络。会发 生消息丢失或重复。这一级别可用于如下情况,环境传感器 数据,丢失一次读记录无所谓,因为不久后还会有第二次发 送。 “至少一次” ,确保消息到达,但消息重复可能会发生。 “只有一次” ,确保消息到达一次。这一级别可用于如下情 况,在计费系统中,消息重复或丢失会导致不正确的结果。 (在实际编程中, 只需要设置 QoS 值即可实现以上几种不同 消息发布服务质量模式) 小型传输,开销很小(固定长度的头部是 2 字节) ,协议交 换最小化,以降低网络流量; 使用 Last Will 和 Testament 特性通知有关各方客户端异常 中断的机制; 生成 dll 库混合编程 在开始开发之前需要做一些准备工作,MQTT 已经把所有的 APIs 封装好了,我们可以使用它的 dll 库,也可以直接导入 源码进行混合编程,一般要求不高的话(因为不太懂得话, 最好不要修改源码) 可以直接将源码生成 dll, 然后使用即可, 下文就是使用该方式 git clone 从这里获得 C Client 源码之后,可以直接使用 VS 打开(我 是 VS2013) 对于上图的说明,下载源码后,打开将是以上界面,包括十 来个工程,这里讲解几个 paho-mqtt3a 一般实际开发中就是使用这个,a 表示的是 异步消息推送(asynchronous) 。 paho-mqtt3as as 表示的是 异步加密 (asynchronousOpenSSL) 。 paho-mqtt3c c 表示的应该是同步(Synchronize) ,一般 性能较差,是发送等待模式。 paho-mqtt3cs 同上,增加了一个 OpenSSL 而已。 这里根据自身的需要选择不同的项目生成 DLL 即可, 右击单 个项目-生成。由于你电脑中可能没有 OPenSSL 环境,如果 点击 VS 工具栏中的生成解决方案,十有八九会失败,因为 它会生成所有项目的解决方案,其实你根本用不着这么多。 另外,上图中无法打开包括文件 VersionInfo.h,你只需要在 src 文件夹中找到 VersionInfo.h.in文件,去掉.in 后缀-重新 生成即可。 MQTT C Client 实战 了解更多可以阅读MQTT C Client for Posix and Windows 一文,下面根据官网资料,摘录了几个 C 语言实现 MQTT 的小 DEMO。 MQTT 使用起来也十分容易,基本上就那四五个函数 MQTTClient_create(创建客户端) 、MQTTClient_connect(连 接服务端) 、MQTTClient_publishMessage(客户端-服务端 发送消息) 、MQTTClient_subscribe(客户端订阅某个主题) 等等。其中,很多异步回调函数,需要自己去实现,如, MQTTAsync_setCallbacksmqtt-_client, mqtt-_client, connlost, msgarrvd, NULL;1 MQTTAsync_setCallbacks 中, connlost 函数指针,是当 MQTT 意外断开链接时会回调的函 数,由自己实现; msgarrvd 函数指针,是当服务器有消息推送回来时,客户端 在此处接受服务端消息内容。 另外,就是一些函数执行是否成功的回调函数,C 语言封装 回调之后,就是这么写法,看起来有些变扭。有兴趣的可以 看浅谈 C/C回调函数(Callback) mqtt-_conn_opts.onFailure onConnectFailure;12 最后,不得不说的就是,MQTT 有些发送或者是订阅的内容 时(某些函数中) ,在编程最好将参数中传进来的值在内存 中拷贝一份再操作, 笔者当时开发时, 就是因为这样的问题, 折腾了较长时间, 后来在 wireshark 中发现数据包中根本没有 内容,才知道是由于函数参数是指针形式,直接在异步中使 用可能会发生一些未知的错误。 Synchronous publication example include “stdio.h“ include “stdlib.h“ include “string.h“

注意事项

本文(mqttcclient实现消息推送入门指引)为本站会员(sunhongz120)主动上传,蚂蚁文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知蚂蚁文库(发送邮件至2303240369@qq.com或直接QQ联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们


网站客服QQ:2303240369

copyright@ 2017-2027 mayiwenku.com 

网站版权所有  智慧蚂蚁网络

经营许可证号:ICP备2024020385号



收起
展开