1、今天与客户联调,客户反映我们搭建的mqtt server连不上,我之前一直程序直连的,为了验证这个问题,特地安装了一个客户端。
先将安装过程记录如下:
1、下载客户端源码包,网上用的比较多的是mosquitto,网上找了个下载地址:
http://www.eclipse.org/downloads/download.php?file=/mosquitto/source/mosquitto-1.4.15.tar.gz
2、解压到 /opt目录下
tar -zxvf mosquitto-1.4.15.tar.gz
3、make 编译,这个过程比较曲折,各种报错,好不折腾。
错误1:
mosquitto.c:884: error: ‘struct mosquitto’ has no member named ‘achan’
mosquitto.c:887: warning: implicit declaration of function ‘ares_fds’
mosquitto.c:887: error: ‘struct mosquitto’ has no member named ‘achan’
mosquitto.c:992: error: ‘struct mosquitto’ has no member named ‘achan’
mosquitto.c:993: warning: implicit declaration of function ‘ares_process’
mosquitto.c:993: error: ‘struct mosquitto’ has no member named ‘achan’
解决方案:
到解压包的路径下修改conifg.mk 中的WITH_SRV=YES =>WITH_SRV=no
# Build with SRV lookup support.
WITH_SRV:=no
错误2:
g++: Command not found
解决方案:
编译之前,需要安装c++插件
yum install gcc gcc-c++
错误3:
read_handle_server.c:31:25: error: uuid/uuid.h: No such file or directory
read_handle_server.c: In function ‘client_id_gen’:
read_handle_server.c:46: error: ‘uuid_t’ undeclared (first use in this function)
read_handle_server.c:46: error: (Each undeclared identifier is reported only once
read_handle_server.c:46: error: for each function it appears in.)
read_handle_server.c:46: error: expected ‘;’ before ‘uuid’
read_handle_server.c:59: warning: implicit declaration of function ‘uuid_generate_random’
read_handle_server.c:59: error: ‘uuid’ undeclared (first use in this function)
read_handle_server.c:60: warning: implicit declaration of function ‘uuid_unparse_lower’
方案2:
yum install openssl-devel(根据需要)
yum install c-ares-devel(必须)
yum install libuuid-devel(必须)
3、安装
sudo make install //安装时需要管理员权限
4、安装完成后,验证
[root@localhost mosquitto-1.4.5]# mosquitto --help mosquitto version 1.4.5 (build date 2018-04-18 01:26:54-0700) mosquitto is an MQTT v3.1 broker.
....
5、测试
切换两个窗口:
订阅方:
mosquitto_sub -t topicA -h 111.222.67.243 -u tbox-client -P 1qaz2wsx
发布方:
mosquitto_pub -t topicA -m Msgfrom1 -h 111.222.67.243 -u tbox-client -P 1qaz2wsx
出现意外状态:
找不到libmosquitto.so.1
error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory
解决方案:修改libmosquitto.so位置
# 创建链接
sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
# 更新动态链接库
sudo ldconfig
附录参数解释:
-h broker地址
-p 端口 (不指定默认1883)
-u 用户名(连接的用户名,mqtt server默认是开启匿名用户访问的,不需要)
-P 密码 (连接的密码,mqtt server默认是开启匿名用户访问的,不需要)
-m 消息内容
-t topic名字
参考文档:
https://www.cnblogs.com/xiaoerhei/p/3777157.html
http://blog.163.com/allegro_tyc/blog/static/33743768201667101816858/
https://blog.csdn.net/laughing_cui/article/details/46530785
相关推荐
MQTT客户端是这个协议中的关键组成部分,它们负责连接到MQTT服务器(也称为代理),并进行数据的发送与接收。下面我们将详细探讨MQTT客户端及其相关知识点。 一、MQTT协议基础 1. MQTT协议的特点: - 低开销:设计...
C#版MQTT客户端是针对MQTT协议开发的软件组件,允许C#应用程序进行MQTT通信,实现设备间的数据传输、状态更新或远程控制等功能。 在这个“c#版MQTT客户端”项目中,主要包括了两个核心功能:订阅topic和发布消息。 ...
使用 Paho MQTT 客户端工具,开发者可以轻松测试 MQTT 服务的可用性,验证数据传输的正确性,或者在开发过程中调试 MQTT 相关的问题。例如,你可以通过配置 `paho.ini` 文件,设置连接到 MQTT 服务器的参数,然后...
连接过程中,客户端会发送 CONNECT 报文,包含身份信息和连接参数。断开时,客户端发送 DISCONNECT 报文。 5. **保持连接(Keep Alive)**:为了检测客户端是否在线,MQTT 协议引入了心跳机制。客户端与服务器在...
"MQTT客户端调试工具V1.1"正是这样一款专为MQTT协议设计的辅助工具,旨在帮助开发者更有效地测试和调试MQTT服务。 首先,让我们详细了解一下这个工具的主要特性: 1. **十六进制显示**:在调试过程中,有时数据...
在本主题中,我们关注的是MQTT客户端调试工具及其源码,这对于开发者来说是非常宝贵的资源,特别是对于那些正在从事Java编程并需要处理MQTT协议的项目的人来说。 标题提到的"mqtt客户端调试工具"是指用于测试和调试...
总的来说,MQTTFX是MQTT开发和测试过程中不可或缺的工具,其简洁易用的界面和丰富的功能为MQTT客户端的测试提供了极大的便利。在64位Windows系统上,"mqttfx-1.5.0-windows-x64"版本能够无缝融入开发环境,帮助用户...
在C语言环境下,开发者可以使用开源的MQTT客户端库,如`paho-mqtt3c`,这是一个由IBM开发的轻量级MQTT客户端库。该库提供了基本的MQTT连接、发布、订阅和断开连接等功能。 - **连接**:客户端需要连接到MQTT...
总的来说,实现MQTT客户端推送涉及客户端库的集成、连接管理、订阅与发布操作,以及可能的服务器配置。通过理解这些概念,你可以构建一个可靠的、实时的数据传输系统,适用于各种IoT和移动应用场景。
几个文件(1、设置配置文件_1-4.png)说明了配置MQTT客户端的过程。这可能包括设置客户端ID(每个连接到Broker的客户端必须有唯一ID)、保持连接的参数、心跳间隔(Keep Alive)以及客户端的其他特性。 3. **订阅...
C# MQTT客户端示例可能涉及到使用.NET Framework或.NET Core,通过NuGet包管理器安装MQTTnet库版本4.0.1.184。MQTTnet是一个强大的开源库,它为.NET开发者提供了完整的MQTT客户端功能,包括连接到MQTT服务器(如使用...
在本项目中,我们将探讨如何使用ESP8266作为MQTT客户端,与MQTT服务器进行通信,并实现断线后的自动重连功能。 MQTT(Message Queuing Telemetry Transport)是一种轻量级的发布/订阅式消息传输协议,广泛应用于...
在本项目中,使用C#的Visual Studio 2019作为开发环境,.NET Framework 4.8作为运行时环境,提供了丰富的类库和工具支持,使得开发MQTT客户端变得更加方便。 MqttNet是一个开源的C# MQTT客户端实现,它完全遵循MQTT...
在实现MQTT客户端的过程中,你需要完成以下步骤: 1. **配置项目**: 在QT Creator中创建一个新的QT项目,设置好编译器和目标平台,并引入Paho MQTT C++库。 2. **连接MQTT服务器**: 使用MQTT库提供的API建立TCP...
在压缩包子文件的文件名称列表中,"MQTT 1.7.1 免注册版 客户端软件 .exe" 指的是这个MQTT客户端的可执行文件,用户下载后可以直接运行在Windows操作系统上。通常,这样的客户端软件会包含创建连接、订阅主题、发布...
7. **连接安全性:** Mqtt客户端支持SSL/TLS加密,以保护数据在传输过程中的安全性。 **MqttClientAndroid-master:** 这个压缩包很可能包含了针对Android平台实现的Mqtt客户端源代码。开发人员可以研究并理解如何...
- 安全连接:MQTT客户端可以通过TLS与服务器建立安全连接,确保数据在传输过程中的机密性和完整性。 - 证书验证:TLS使用数字证书来验证服务器的身份,防止假冒服务器。 - 客户端认证:TLS也支持客户端证书,实现...
MQTT客户端是连接到MQTT服务器(也称为Broker)的应用程序,用于发送和接收消息。在“mqtttls”上下文中,客户端不仅需要遵循MQTT协议,还需要支持TLS握手过程,以便在建立连接时验证服务器的身份,并创建一个加密的...
在这个"MQTT客户端(可用于测试)"中,我们有一个专为测试目的设计的MQTT客户端实现,它可以在Visual Studio (VS)环境中运行。以下是对这个主题的详细阐述: 1. **MQTT协议**: MQTT是基于TCP/IP协议栈的,设计目的...
`Mqtt-Clinet-Window-测试工具.zip`可能包含了一个适用于Windows平台的MQTT客户端测试工具,用于模拟真实的客户端行为,测试与服务端的连接、发布消息、订阅主题等功能。这样的工具对于开发和调试MQTT应用非常有用,...