MQTT如何配配置使得客户端收到且仅收到一次消息
1.命令行方式
为了保证客户端能够收且仅收到一次,需要在发布消息时,设置clean_session=false,qos=2,具体到命令行为./mosquitto_pub -q 2 -t 具体的topic -m 具体的消息
retain说明:
在MQTT协议中,PUBLISH消息固定头部RETAIN标记,只有为1才要求服务器需要持久保存此消息,除非新的PUBLISH覆盖。
对于持久的、最新一条PUBLISH消息,服务器不但要发送给当前的订阅者,并且新的订阅者(new subscriber,同样需要订阅了此消息对应的Topic name)会马上得到推送。
2. MQTT Client library for C
首先在linux下,解压缩paho.mqtt.c-master(C lib).zip,然后make,make install即可
cliend端示例代码
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "MQTTClient.h"#define ADDRESS "tcp://localhost:1883"
#define CLIENTID "ExampleClientPub"
#define TOPIC "MQTT Examples"
#define PAYLOAD "Hello World!"
#define QOS 1
#define TIMEOUT 10000Lint main(int argc, char* argv[])
{MQTTClient client;MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer;MQTTClient_message pubmsg = MQTTClient_message_initializer;MQTTClient_deliveryToken token;int rc;MQTTClient_create(&client, ADDRESS, CLIENTID,MQTTCLIENT_PERSISTENCE_NONE, NULL);conn_opts.keepAliveInterval = 20;conn_opts.cleansession = 1;if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS){printf("Failed to connect, return code %d\n", rc);exit(-1);}pubmsg.payload = PAYLOAD;pubmsg.payloadlen = strlen(PAYLOAD);pubmsg.qos = QOS;pubmsg.retained = 0;MQTTClient_publishMessage(client, TOPIC, &pubmsg, &token);printf("Waiting for up to %d seconds for publication of %s\n""on topic %s for client with ClientID: %s\n",(int)(TIMEOUT/1000), PAYLOAD, TOPIC, CLIENTID);rc = MQTTClient_waitForCompletion(client, token, TIMEOUT);printf("Message with delivery token %d delivered\n", token);MQTTClient_disconnect(client, 10000);MQTTClient_destroy(&client);return rc;
}
编译时加上-lpaho-mqtt3c即可
MQTT如何配配置使得客户端收到且仅收到一次消息相关推荐
- Windows上Mqtt服务器搭建与使用客户端工具MqttBox进行测试
场景 MQTT协议 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的" ...
- 提交客户端证书_MQTT X v1.3.3 正式发布 - 跨平台 MQTT 5.0 桌面测试客户端
MQTT X 是由全球领先的开源物联网中间件提供商 EMQ 开源的一款跨平台 MQTT 5.0 桌面测试客户端,它支持 macOS,Linux,Windows.MQTT X 的用户界面借助聊天软件的形 ...
- MQTT Broker mosquito配置以及使用tls证书登录附上Python调用代码
MQTT Broker mosquito配置以及使用tls证书登录 文章目录 MQTT Broker mosquito配置以及使用tls证书登录 1. 前言 2. 安装 3. mosquito相关命令 ...
- Winform中使用MQTTnet实现MQTT的服务端和客户端之间的通信以及将订阅的消息保存到文件
场景 MQTT MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻 ...
- Nginx配置HTTPS客户端认证
Nginx配置HTTPS客户端认证 最近折腾自己个人网站,有一个私人模块,只能自己访问,使用登录授权方式虽然也能达到目的,但每次都要登录,且密码也不一定安全.想起学HTTPS的时,有一个客户端证书的概 ...
- CAS (3) —— Mac下配置CAS客户端经代理访问Tomcat CAS
CAS (3) -- Mac下配置CAS客户端经代理访问Tomcat CAS tomcat版本: tomcat-8.0.29 jdk版本: jdk1.8.0_65 nginx版本: nginx-1.9 ...
- 工作组环境中配置WSUS客户端
11.3工作组环境中配置WSUS客户端 由于WSUS的目的是为Windows 客户端提供更新,因此任何Windows操作系统都可以从WSUS服务器下载更新,但是需要通过组策略进行配置.早期版本的Win ...
- 搭建YUM服务器,配置yum客户端
2019独角兽企业重金招聘Python工程师标准>>> 搭建YUM服务器 配置yum客户端 作者:沈小然 版本:1.0 日期:2013年4月23日 1 YUM介绍 YUM是Yel ...
- [菜鸟SpringCloud实战入门]第七章:配置中心客户端主动刷新机制 + 配置中心服务化和高可用改造...
前言 欢迎来到菜鸟SpringCloud实战入门系列(SpringCloudForNoob),该系列通过层层递进的实战视角,来一步步学习和理解SpringCloud. 本系列适合有一定Java以及Sp ...
最新文章
- smartgit 授权文件 Free Trial License to Non-Commercial
- F#探险之旅(三):命令式编程(上)
- 共轭矩阵与自共轭矩阵
- postmessage与sendmessage的区别
- Python笔记-UiSelector混合定位
- inotify和epoll
- 服务器磁盘扩展卷时遭遇“There is not enough space available on the disk(s) to complete this operation.”错误...
- VirtualBox 复制虚拟机 克隆系统
- 数学建模论文写作方法
- CuteFTP无法与虚拟机Ubuntu进行连接---主机与虚拟机能ping通
- 计算机系统时间设置打不开,电脑时间或日期不对的修改方式
- Android多开检测的另一个思路
- 【QCM2150】WCN3680 WPA3 R3 4.2.3.17测试失败及问题解决方案
- ODB 入门介绍(二)
- 我的cocos2d-x学习之路
- python猫狗大战游戏下载_猫狗大战RPG游戏下载-猫狗大战RPG官方版下载v1.1.8-PChome下载中心...
- JSP入门教程(二)
- java毕业设计实验室主页系统源码+lw文档+mybatis+系统+mysql数据库+调试
- python是什么软件是电脑系统自带的软件吗_用Python编写桌面软件系统的步骤是什么?...
- thinkphp sql查询范围大于等于和小于等于