针对物联网中MQTT协议的学习_客户端代码学习笔记(二)
来源:互联网 发布:java处理引号 编辑:程序博客网 时间:2024/06/10 00:58
前一篇是有关Mqtt底层协议机制的阅读,这一片针对客户端逻辑进行学习
1、建立连接; 建立连接需要一个结构体
typedef struct
{
char struct_id[4]; //定值
int struct_version; //定值
unsigned char MQTTVersion;
MQTTString clientID; //客户ID
unsigned short keepAliveInterval;
unsigned char cleansession; //0:表示如果订阅的客户机断线了,要保存为其要推送的消息 1:上线清理消息?
unsigned char willFlag; //遗嘱标志
MQTTPacket_willOptions will; //遗嘱
MQTTString username;
MQTTString password;
} MQTTPacket_connectData;
初始化
{ {'M', 'Q', 'T', 'C'}, 0, 4, {NULL, {0, NULL}}, 60, 1, 0, MQTTPacket_willOptions_initializer, {NULL, {0, NULL}}, {NULL, {0, NULL}} }
2、订阅消息
应该包含一个TopicName(Subject/Channel),即订阅关键词
QoS=1:
至少一次,有可能重复。
Client[Qos=1,DUP=0/*重复次数*/,MessageId=x] --->PUBLISH--> Server收到后,存储Message,发布,删除,向Client回发PUBACK
Client收到PUBACK后,删除Message;如果未收到PUBACK,设置DUP++,重新发送,Server端重新发布,所以有可能重复发送消息
每次和云端交互后都要返回具体的交互类型 如CONNACK,SUBACK等。
3、发布消息 心跳响应
注
心跳:
(1)我们设置的MQTT是闲时心跳、并且是长链接
(2)心跳时间(Keep Alive timer)
以秒为单位,定义服务器端从客户端接收消息的最大时间间隔。一般应用服务会在业务层次检测客户端网络是否连接,不是TCP/IP协议层面的心跳机制(比如开启SOCKET的SO_KEEPALIVE选项)。 一般来讲,在一个心跳间隔内,客户端发送一个PINGREQ消息到
参考:http://www.tuicool.com/articles/AFvmee
http://www.cnblogs.com/caca/p/mqtt.html
0 0
- 针对物联网中MQTT协议的学习_客户端代码学习笔记(二)
- 针对物联网中MQTT协议的学习(一)
- 针对物联网中MQTT协议的学习(三)
- MQTT协议学习笔记
- MQTT协议学习笔记(转载)
- 物联网MQTT协议
- MQTT 物联网协议
- mqtt 协议客户端代码
- 物联网学习笔记(二)
- MQTT协议(推送)学习
- 树莓派学习笔记:MQTT协议的简单应用
- MQTT 物联网连接协议
- 物联网传输协议MQTT
- 物联网接入协议-MQTT
- MQTT的学习研究(二)moquette-mqtt 的使用之mqtt broker的启动
- 物联网行业中Mqtt的使用
- 如何应用MQTT协议到物联网中(IOT)
- MQTT的学习研究(六) MQTT moquette 的 Blocking API 订阅消息客户端使用
- vim处理字符的大小写转换
- JDBC学习第一天
- java加载spring配置文件
- 腾讯面试总结
- 代码在eclipse下不报错,在doc命令行下报错
- 针对物联网中MQTT协议的学习_客户端代码学习笔记(二)
- 国外网站上解决SetupDiEnumDeviceInterfaces返回false的方法 (转)
- oc基础(部分)
- ActiveMQ的优点
- 关于同一台电脑启2个tomcat问题
- BFS 搜索 Problem 1009 连连看
- python 学习知识点一
- Spring注解详解
- A Complete Tutorial on Tree Based Modeling from Scratch (in R & Python)