这几天从 github mongoose 下载了 mongoose 的最新代码,然后想用这份代码搭建 mqtt 客户端,然而在编译的时候出现了一些错误,记录如下:

因为这个是源码是 mongoose.c C文件,编译器用的是 cc,然而用 cc 编译时,是不支持 for 循环里定义变量的,C++才支持。错误信息里提示,添加编译选项 -std=c99 也可以支持 for 循环里定义变量,但又会出现新问题。于是在目录mongoose/examples/mqtt-client 下的 Makefile 里添加了编译选项 -std=c99 后,编译,新的错误如下:

提示函数 clock_gettime(CLOCK_REALTIME, &ts); 里的  CLOCK_REALTIME 未定义。man  一下clock_gettime(), 看到需要  #include <time.h>,然后查看 mongoose.h 里,头文件包含都是用宏控制的,看最开头位置有这些定义:

如果没有定义 MG_ARCH,则这里默认 MG_ARCH=MG_ARCH_UNIX, 在 mongoose.h 里是包含了 <time.h> 头文件的,如:

但始终编译不过,后来发现是添加了编译选项  -std=c99 时就会出现这个错误(有大神知道为什么吗?)。所以就不加 -std=c99 编译选项了,那就只能修改 mongoose.c 源码了,把 for 循环里的变量定义放到外面即可,最终编译成功运行结果如下:

上面这个是在公司环境下运行的结果,可能公司网络环境有些限制了,一直连接不上 mqtt 服务器。而下面这个结果则是在家里用自己 CentOS 系统跑出来的结果:

这个例子的介绍可以在这里查看:Mongoose_example_mqtt ,连的是国外的 mqtt 服务器,所以在公司网络可能真的有问题。

当我用 MQTT.fx 图形客户端测试时,用例子中的 MQTT 服务器 broker.hivemq.com 配置MQTT.fx时,测试结果如下:

它实际收到的是两条消息,前一条是 hello,后一条是 goodbye。原代码里的MQTT 服务器不稳定,经常掉线,用这个:"mqtt://broker-cn.emqx.io:1883" 比较稳定。但从 MQTT.fx 发布的消息,程序没能收到,这个逻辑 mongoose 里不知道是怎么接收发布的消息的,有时间再去看了。

mongoose搭建mqtt客户端相关推荐

  1. ESP8266的MQTT客户端搭建教程(基于NONS_SDK_v2.0)

    前言 MQTT是IBM开发的一个即时通讯协议,面向M2M和物联网的连接,采用轻量级发布和订阅消息传输机制,并且有可能成为物联网的重要组成部分. ESP8266是一款物美价廉的Wi-Fi芯片,集成Ten ...

  2. 【ESP8266】ESP8266的MQTT客户端搭建教程(基于NONS_SDK_v2.0)

    前言 MQTT是IBM开发的一个即时通讯协议,面向M2M和物联网的连接,采用轻量级发布和订阅消息传输机制,并且有可能成为物联网的重要组成部分. ESP8266是一款物美价廉的Wi-Fi芯片,集成Ten ...

  3. 一步一步来:MQTT服务器搭建、MQTT客户端使用

    物联网应用如火如荼,本文就物联网应用中最受青睐的协议 MQTT相关测试工具的使用进行简单说明. 希望此文能给需要用到的朋友一些微薄的帮助-- 一.MQTT服务器( emqx )搭建 1. 下载服务器M ...

  4. Ubuntu16.04LTS环境下搭建MQTT服务器以及QT实现MQTT客户端

    MQTT服务器搭建 使用EMQX搭建MQTT服务器,EMQX 4.2.14 for Ubuntu 16.04下载 下载zip包,选择安装方式为zip,cpu架构选择x86_64 按照网页的指示进行下载 ...

  5. MQTT协议详解 Linux、Windows服务器搭建,客户端创建

    Linux mqtt服务器搭建: mqtt服务器依赖java环境,先从这个网址下载java的JDK文件 下载链接 注意不要下载错了,选择好自己的系统,千万不要下载成Demos文件 我这里选择的是: 解 ...

  6. MQTT | Windows + mosquitto搭建MQTT Broker(本地服务器)与MQTTX客户端联调

    文章目录 一.前言 二.mosquitto 2.1.安装 2.2.修改mosquitto.conf配置文件 2.2.1.listener 2.2.2.allow_anonymous 2.2.3.pas ...

  7. android mqtt服务器搭建,Mqtt从服务端到Android客户端搭建(mqtt服务端搭建)

    一.简介 MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议. 此处不再引入官方文字描述,以个人开发认识浅谈一下 本文分为两部分: 1. M ...

  8. 搭建MQTT服务器及客户端

    下载MQTT服务器MQTT Broker,以emqx 为例: 两种下载方式: 最简单的方式:直接点击下面的地址,下载后解压即可 下载地址:https://download.csdn.net/downl ...

  9. mqtt服务器搭建与qt下的mqtt客户端实现

    一.mqtt介绍 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一个基于客户端-服务器的消息发布/订阅传输协议.MQTT协议是轻量.简单. ...

最新文章

  1. 2014-2015 ACM-ICPC, Asia Xian Regional Contest G The Problem to Slow Down You 回文树
  2. 算力网络 — 技术架构
  3. centos7 安装教程 图文流程安装后包含界面
  4. 信息学奥赛一本通C++语言——1046:判断一个数能否同时被3和5整除
  5. 电影网络首播后喜剧场上线,搅局者加速行业重塑
  6. jclasslib安装
  7. UE4开发学习笔记(双人游戏共享视角,共享相机)
  8. ubuntu 如何关闭笔记本触摸板
  9. 突破次元壁垒,让身边的玩偶手办在屏幕上动起来!
  10. 基于智能手机的加速计进行计步实现。
  11. Kahan summation
  12. 解决微信内红域名无需申诉过白
  13. 『数据结构』海量数据处理
  14. 2021南京航天航空大学820自动控制原理参考答案
  15. 20P46 Premiere预设800种干扰缩放平移旋转分割拉伸全景透视扭曲炫光视频无缝转场
  16. 全球24个时区的划分
  17. 占地2000亩!这所985高校国际校区开建
  18. onpropertychange与输入法有关
  19. vscode markdown语法
  20. java 导出excel工具类

热门文章

  1. new bing申请与试用详细讲解(纯小白适用,免加速器)
  2. Java 小白 彩票中奖小程序
  3. 企 业 的 项 目 化 管 理 (李文先生)
  4. node 环境 启用 ES2015导入功能
  5. Mysql 8.0 创建DBCP连接池
  6. 平面设计怎么自学?如何自学平面设计?
  7. 通达信冲天短进指标公式源码+XG预警源码
  8. phpstudy创建网页并用php输出hello world
  9. 数据库系统概论第二章总结
  10. 大众点评最新字体解密19年7月