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如何配配置使得客户端收到且仅收到一次消息相关推荐

  1. Windows上Mqtt服务器搭建与使用客户端工具MqttBox进行测试

    场景 MQTT协议 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的" ...

  2. 提交客户端证书_MQTT X v1.3.3 正式发布 - 跨平台 MQTT 5.0 桌面测试客户端

    MQTT X 是由全球领先的开源物联网中间件提供商 EMQ 开源的一款跨平台 MQTT 5.0 桌面测试客户端,它支持 macOS,Linux,Windows.MQTT X 的用户界面借助聊天软件的形 ...

  3. MQTT Broker mosquito配置以及使用tls证书登录附上Python调用代码

    MQTT Broker mosquito配置以及使用tls证书登录 文章目录 MQTT Broker mosquito配置以及使用tls证书登录 1. 前言 2. 安装 3. mosquito相关命令 ...

  4. Winform中使用MQTTnet实现MQTT的服务端和客户端之间的通信以及将订阅的消息保存到文件

    场景 MQTT MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻 ...

  5. Nginx配置HTTPS客户端认证

    Nginx配置HTTPS客户端认证 最近折腾自己个人网站,有一个私人模块,只能自己访问,使用登录授权方式虽然也能达到目的,但每次都要登录,且密码也不一定安全.想起学HTTPS的时,有一个客户端证书的概 ...

  6. 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 ...

  7. 工作组环境中配置WSUS客户端

    11.3工作组环境中配置WSUS客户端 由于WSUS的目的是为Windows 客户端提供更新,因此任何Windows操作系统都可以从WSUS服务器下载更新,但是需要通过组策略进行配置.早期版本的Win ...

  8. 搭建YUM服务器,配置yum客户端

    2019独角兽企业重金招聘Python工程师标准>>> 搭建YUM服务器 配置yum客户端 作者:沈小然 版本:1.0 日期:2013年4月23日 1   YUM介绍 YUM是Yel ...

  9. [菜鸟SpringCloud实战入门]第七章:配置中心客户端主动刷新机制 + 配置中心服务化和高可用改造...

    前言 欢迎来到菜鸟SpringCloud实战入门系列(SpringCloudForNoob),该系列通过层层递进的实战视角,来一步步学习和理解SpringCloud. 本系列适合有一定Java以及Sp ...

最新文章

  1. smartgit 授权文件 Free Trial License to Non-Commercial
  2. F#探险之旅(三):命令式编程(上)
  3. 共轭矩阵与自共轭矩阵
  4. postmessage与sendmessage的区别
  5. Python笔记-UiSelector混合定位
  6. inotify和epoll
  7. 服务器磁盘扩展卷时遭遇“There is not enough space available on the disk(s) to complete this operation.”错误...
  8. VirtualBox 复制虚拟机 克隆系统
  9. 数学建模论文写作方法
  10. CuteFTP无法与虚拟机Ubuntu进行连接---主机与虚拟机能ping通
  11. 计算机系统时间设置打不开,电脑时间或日期不对的修改方式
  12. Android多开检测的另一个思路
  13. 【QCM2150】WCN3680 WPA3 R3 4.2.3.17测试失败及问题解决方案
  14. ODB 入门介绍(二)
  15. 我的cocos2d-x学习之路
  16. python猫狗大战游戏下载_猫狗大战RPG游戏下载-猫狗大战RPG官方版下载v1.1.8-PChome下载中心...
  17. JSP入门教程(二)
  18. java毕业设计实验室主页系统源码+lw文档+mybatis+系统+mysql数据库+调试
  19. python是什么软件是电脑系统自带的软件吗_用Python编写桌面软件系统的步骤是什么?...
  20. thinkphp sql查询范围大于等于和小于等于

热门文章

  1. Python入门习题大全——熟食店
  2. 弘辽科技:淘宝全款预售怎么设置?预售类型有哪些?
  3. 易语言大漠游戏一键登录检测账户密码
  4. JS 控制浏览器全屏和取消全屏
  5. 烘焙行业新店开业方案
  6. Python压缩模块:bz2
  7. 如何用zemax导入solidworks装配体
  8. Docker核心技术学习笔记
  9. SSL/TLS证书过期了怎么办?
  10. 迅雷私传用户资料陷入信任危机