linux mqtt客户端

实现功能:

(1)定时30s发送心跳包;

(2)接收 mqtt 数据包,解析函数是 user_recv_handle_cb;

(3)定时  PERIOD_TIME 发布 自身订阅的主题 信息,即循环 PERIOD_TIME 发啥收啥。

说明:

(1)主要根据  庆科的MiCO_A_v3.2.0/demos/net/mqtt_client 的 stm32  freeRTOS  移植到 linux 平台。

(2)实现方式:select、queue 、pthread。

核心源码:

/*************************************** 描述***********************
作者: lee
日期: 2019/7/2
文件名:mqtt_client.c
功能描述:
    1.定时30s发送心跳包
    2.接收 mqtt 数据包,解析函数是user_recv_handle_cb
    3.定时  PERIOD_TIME   发布 自身订阅的主题 信息,即循环 PERIOD_TIME 发啥收啥

**********************************************************************/
#include "./libraries/protocols/mqtt/MQTTClient.h"
#include "/usr/local/include/uv.h"
#include "pthread.h"
#include "sys/select.h"
#include "sys/queue.h"

/*********************************
 *              Macros
 ***********************************************/
#define app_log(M, ...) custom_log("APP", M, ##__VA_ARGS__)
#define mqtt_log(M, ...) custom_log("MQTT", M, ##__VA_ARGS__)

#define MQTT_CMD_TIMEOUT 5000 // 5s

#define MAX_MQTT_TOPIC_SIZE  (256)
#define MAX_MQTT_DATA_SIZE   (1024)

#define MQTT_SERVER "127.0.0.1"
//#define MQTT_SERVER "test.mosquitto.org"
#define MQTT_SERVER_PORT 1883

#define PERIOD_TIME   2000  // 2s

/***********************************************
 *              Constants
 ***********************************************/
#define MQTT_CLIENT_ID  "MiCO_MQTT_Client"
#define MQTT_CLIENT_USERNAME NULL
#define MQTT_CLIENT_PASSWORD NULL
#define MQTT_CLIENT_KEEPALIVE 30
#define MQTT_CLIENT_SUB_TOPIC "mico/test/send" // loop msg
#define MQTT_CLIENT_PUB_TOPIC "mico/test/send"
#define MQTT_YIELD_TMIE 5000 // 5s
#define MQTT_CLIENT_PUB_MSG "mico_mqtt_client_test_data_1234567890"

/***********************************************
 *              Structures
 ***********************************************/
typedef struct {   
    char topic[MAX_MQTT_TOPIC_SIZE];
    char qos;
    char retained;

    uint8_t data[MAX_MQTT_DATA_SIZE];
    uint32_t datalen;
} s_MQTT_Data_Packet_Info;

struct node{
    STAILQ_ENTRY(node) next;
    void (*fp) (void*);  
    void *data;
};

/***********************************************
 *              Function Declarations
 ***********************************************/
void user_send_cb(void* data);



/***********************************************
 *              Variables Definitions
 *********************************************
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值