从零开发MQTT服务(二)
2016-06-22 22:53
495 查看
二、配置文件
也不是核心模块,不用太多篇幅写了,看我github代码吧
文件路径:src/conf.c
给配置定义的结构体是src/libertymqtt_broker.h中的
在程序启动的main函数中调用
初始化,读取配置文件。
始于2015-05-17,北京;更新至2016-06-22,杭州。
也不是核心模块,不用太多篇幅写了,看我github代码吧
文件路径:src/conf.c
给配置定义的结构体是src/libertymqtt_broker.h中的
/** 配置文件 */ typedef struct { char *config_file; /**< 配置文件名 */ char *log_file; /**< 日志文件名 */ FILE *log_fptr; /**< 配置文件FILE指针 */ char *pid_file; /**< 进程锁文件名 */ bool daemon; /**< 后台运行 */ } libertymqtt_config;
在程序启动的main函数中调用
_init_conf(&config);
初始化,读取配置文件。
static int load_conf_from_file(libertymqtt_config *config, bool reset, const char *filename, int level, int *line){ int ret = 0; const int MAX_LINE = 1024; char buf[MAX_LINE]; FILE *fptr = NULL; fptr = fopen(filename, "rt"); if(!fptr){ _log(ERROR, "无法打开文件 %s, %s\n", filename, strerror(errno)); return -1; } *line = 0; while(fgets(buf, MAX_LINE, fptr)){ // 每次读取一行 (*line)++; // 行号递增 if('#' != buf[0] && 10 != buf[0] && 13 != buf[0]){ // 略过注释#,以及换行\n和\r // 去除末尾的多个\n和\r的字符,都替换为0。 while(buf[strlen(buf)-1] == 10 || buf[strlen(buf)-1] == 13){ buf[strlen(buf)-1] = 0; } // 接下来按”=“号切割字符串 char *token; char *saveptr = NULL; token = strtok_r(buf, "=", &saveptr); //_log(INFO, "token:%s saveptr:%s\n", token, trim(saveptr)); token = trim(token); if(token){ if(!strcmp(token, "host")){ // 地址 } else if (!strcmp(token, "port")) { // 端口的配置 if(reset) continue; config->port = atoi(trim(saveptr)); if(config->port > 65535 || config->port<1){ _log(WARNING, "端口%d无效,已使用默认1883端口,端口应在1和65535之间!\n", config->port); config->port = 1883; } _log(INFO, "port %d\n", config->port); } else if (!strcmp(token, "log_type")) { // 日志开关 } } } } fclose(fptr); return SUCCESS; }
始于2015-05-17,北京;更新至2016-06-22,杭州。
相关文章推荐
- MQTT 折腾笔记----协议简读
- c++ lua 服务器框架
- MQTT协议
- [素材资源] Android实现推送方式解决方案(转)
- How to implement embedded Mqtt Client using W5500 IC
- mqtt配置常见错误
- MQTT在linux下环境下的编译与配置
- Mosquitto 在 Mac上安装调试
- MQTT客户端移植到STM32
- MQTT的学习研究(十七)Mosquitto简要教程(安装&使用)
- MQTT的学习研究(十六) MQTT的Mosquitto的window安装部署
- MQTT的学习研究(十五) MQTT 和android整合文章
- MQTT的学习研究(十四) MQTT moquette 的 Callback API 消息发布订阅的实现
- MQTT的学习研究(十三) IBM MQTTV3 简单发布订阅实例
- MQTT的学习研究(十二) MQTT moquette 的 Future API 消息发布订阅的实现
- MQTT的学习研究(十一) IBM MQTT 简单发布订阅实例
- MQTT的学习研究(十)mosquitto——一个开源的mqtt代理
- MQTT的学习研究(九)基于HTTP GET MQTT 抓取消息服务端使用
- MQTT的学习研究(八)基于HTTP DELETE MQTT 订阅消息服务端使用
- MQTT的学习研究(七)基于HTTP POST MQTT 发布消息服务端使用