mosquitto软件编程

简介: mosquitto软件编程

使用mosquitto库函数前,要先初始化,使用之后要清除:


int mosquitto_lib_init(void);
int mosquitto_lib_cleanup();


  /*新建客户端*/    
struct mosquitto *mosquitto_new(    
const char *id,//用户自定义标识ID    
bool clean_session,//断开后是否保留订阅信息
true/false    void *userdata//回调参数    
);
      *释放客户端*/
 void mosquitto_destroy(struct mosquitto *mosq);


参考接口函数:


20200321205911213.png


订阅:


//订阅
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <stdint.h>
#include <mosquitto.h>
#include <time.h>
// 消息回调
void my_message_callback(struct mosquitto *mosq, void *obj, const \                
        struct mosquitto_message *msg)
{    
time_t t;    
struct tm *lt;                                                                                                            printf("%d:topic(%s)->%s\n",__LINE__,(char *)msg->topic,\                
        (char *)msg->payload);
}
int main(int argc,char *argv[]){                                                                                                                             struct mosquitto *m_hMqtt;    
char *topic1 = "temp";
//初始化lib库函数    
mosquitto_lib_init();    
// 定义一个客户端名为subtest的发布端。客户端表示订阅端的唯一性    
m_hMqtt = mosquitto_new("subdemo", true, "data");        
//订阅回调                                                                                                           mosquitto_message_callback_set(m_hMqtt, my_message_callback);        
//连接服务器(代理器)    
mosquitto_connect(m_hMqtt, "49.232.150.163", 1883, 2);    
//订阅消息    
mosquitto_subscribe(m_hMqtt,NULL,topic1,1);    
/* 阻塞等待 */    
mosquitto_loop_start(m_hMqtt);       
mosquitto_loop_stop(m_hMqtt, false);    
mosquitto_destroy(m_hMqtt);    
mosquitto_lib_cleanup();    
return 0;
}


发布:


//发布
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <stdint.h>
#include <mosquitto.h>
#include <time.h>
int main(int argc,char *argv[]){                                                                                                                             struct mosquitto *m_hMqtt;    
char *topic1 = "temp";    
char *content = "27.5";        
//初始化lib库函数    
mosquitto_lib_init();    
// 定义一个客户端名为subtest的发布端。客户端表示订阅端的唯一性    
m_hMqtt = mosquitto_new("pubdemo", true, "data");       
mosquitto_connect(m_hMqtt, "49.232.150.163",1883, 2);
mosquitto_publish(m_hMqtt,NULL,topic1,strlen(content)+1,content,1,true);        
mosquitto_destroy(m_hMqtt);    
mosquitto_lib_cleanup();   
return 0;
 }
相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
4月前
|
存储 网络协议 Ubuntu
【Linux开发实战指南】基于UDP协议的即时聊天室:快速构建登陆、聊天与退出功能
UDP 是一种无连接的、不可靠的传输层协议,位于IP协议之上。它提供了最基本的数据传输服务,不保证数据包的顺序、可靠到达或无重复。与TCP(传输控制协议)相比,UDP具有较低的传输延迟,因为省去了建立连接和确认接收等过程,适用于对实时性要求较高、但能容忍一定数据丢失的场景,如在线视频、语音通话、DNS查询等。 链表 链表是一种动态数据结构,用于存储一系列元素(节点),每个节点包含数据字段和指向下一个节点的引用(指针)。链表分为单向链表、双向链表和循环链表等类型。与数组相比,链表在插入和删除操作上更为高效,因为它不需要移动元素,只需修改节点间的指针即可。但访问链表中的元素不如数组直接,通常需要从
255 2
|
3月前
|
运维 安全 Linux
【超实用秘籍】Linux文件传输新高度:10个scp命令让你瞬间变身文件传输达人,从此告别繁琐操作!
【8月更文挑战第13天】文件传输是运维工作的核心部分,尤其对Linux用户来说,了解高效且安全的传输方法非常重要。本文介绍10种scp命令的应用技巧,涵盖基础文件传输、密钥认证、目录复制等场景,助你灵活运用这一基于SSH协议的安全工具。从简单的文件传输到复杂的多主机文件迁移,scp都能轻松应对。通过本文的学习,你将能更熟练地使用scp命令,提高工作效能。
217 6
|
XML 物联网 C语言
MQTT_mosquitto 老版本移植受阻 | 学习笔记
快速学习 MQTT_mosquitto 老版本移植受阻
MQTT_mosquitto 老版本移植受阻 | 学习笔记
|
网络协议 Docker 容器
openvpn(全套自动化脚本)奉上!
openvpn(全套自动化脚本)奉上!
|
Linux
Buildroot系列开发(四)Linux工具链剖析(下)
Buildroot系列开发(四)Linux工具链剖析
102 3
Buildroot系列开发(四)Linux工具链剖析(下)
|
数据安全/隐私保护 网络架构
计算机网络实验(华为eNSP模拟器)——第七章 远程终端协议(远程登陆)
计算机网络实验(华为eNSP模拟器)——第七章 远程终端协议(远程登陆)
计算机网络实验(华为eNSP模拟器)——第七章 远程终端协议(远程登陆)
|
Linux 开发工具
Buildroot系列开发(四)Linux工具链剖析(上)
Buildroot系列开发(四)Linux工具链剖析
154 0
Buildroot系列开发(四)Linux工具链剖析(上)
|
网络协议 Shell Linux
【网安神器篇】——瑞士军刀Netcat
今天给大家分享的网络安全神器是网安界的瑞士军刀——Netcat
359 0
【网安神器篇】——瑞士军刀Netcat
|
安全 网络协议 Linux
Linux科普-扫除盲区(你应该知道的Telnet)
Linux科普-扫除盲区(你应该知道的Telnet)
183 0
Win系统 - 问题集
Win系统 - 问题集
70 0