3 Star 1 Fork 4

Admin/tty-server

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
mqttpubsub.c 2.14 KB
一键复制 编辑 原始数据 按行查看 历史
masterclock 提交于 2019-06-28 13:33 +08:00 . initial commit
/*
needs libmosquitto-dev
$ gcc -o libmosq libmosq.c -lmosquitto
*/
#include <stdio.h>
#include <mosquitto.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
struct mosquitto *mosq = NULL;
char const *topic = NULL;
void mosq_log_callback(struct mosquitto *mosq, void *userdata, int level, const char *str)
{
/* Pring all log messages regardless of level. */
switch(level){
//case MOSQ_LOG_DEBUG:
//case MOSQ_LOG_INFO:
//case MOSQ_LOG_NOTICE:
case MOSQ_LOG_WARNING:
case MOSQ_LOG_ERR: {
printf("%i:%s\n", level, str);
}
}
}
void (*g_mosq_msg_handler)(char const *topic, char const *payload, int payload_len);
void mosq_message_callback(struct mosquitto *mosq, void *userdata, const struct mosquitto_message *msg) {
g_mosq_msg_handler(msg->topic, (char const *)msg->payload, msg->payloadlen);
}
void mosq_disconn_callback(struct mosquitto *mosq, void *userdata, int reason) {
mosquitto_reconnect(mosq);
}
void mosq_conn_callback(struct mosquitto *mosq, void *userdata, int reason) {
mosquitto_subscribe(mosq, NULL, topic, 0);
}
void mqtt_setup(char const *ip, int pport, char const *subtopicpattern, void (*hdr)(char const *, char const *, int)){
char const *host = ip;//"localhost";
int port = pport;//1883;
int keepalive = 60;
bool clean_session = true;
topic = subtopicpattern;//"/testtopic";
mosquitto_lib_init();
mosq = mosquitto_new(NULL, clean_session, NULL);
if(!mosq){
fprintf(stderr, "Error: Out of memory.\n");
exit(1);
}
mosquitto_log_callback_set(mosq, mosq_log_callback);
mosquitto_disconnect_callback_set(mosq, mosq_disconn_callback);
mosquitto_connect_callback_set(mosq, mosq_conn_callback);
g_mosq_msg_handler = hdr;
mosquitto_message_callback_set(mosq, mosq_message_callback);
if(mosquitto_connect(mosq, host, port, keepalive)){
fprintf(stderr, "<Unable to connect.>\n");
// exit(1);
}
int loop = mosquitto_loop_start(mosq);
if(loop != MOSQ_ERR_SUCCESS){
fprintf(stderr, "Unable to start loop: %i\n", loop);
exit(1);
}
}
int mqtt_send(char const *ptopic, char *msg, int len){
return mosquitto_publish(mosq, NULL, ptopic, len, msg, 0, 0);
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/shipnet_masterclock/tty-server.git
git@gitee.com:shipnet_masterclock/tty-server.git
shipnet_masterclock
tty-server
tty-server
master

搜索帮助