1.QT使用外部库
2.海豚MQTT-Mosquitto(1)
3.黑群晖怎样搭建mqtt服务器
4.用mosquitto+paho+protobuf实现mqtt的源译示例代码
5.在云服务器上搭建了mqtt,为什么手机连接不上mqtt,码编要怎么做才能连接上?求求大神帮忙
6.Linux搭建MQTT服务器(mosquitto)并使用
QT使用外部库
当QT程序需引入外部库时,源译编译过程中可能会遇到错误,码编即便是源译在Linux环境下也是如此。为解决这个问题,码编.net论坛源码下载关键在于正确配置外部库的源译路径。本文以mosquitto库为例,码编介绍两种主要的源译导入方法。
首先,码编处理头文件。源译在QT中,码编添加头文件时路径的源译写法与库文件不同,头文件路径前无需 '-I',码编而库文件路径则需要 '-L'。源译使用QtCreator时,可以在项目名称处右键,选择"添加库",然后指定所需的库类型和路径。
为了提高代码可维护性,当项目文件过多时,应将源文件和头文件进行分类。创建对应的文件夹,将相关文件移至其中,最后在.pro文件中添加路径设置。
值得注意的是,QT在编译过程中可能会对未使用的形参或变量产生警告,虽然这些警告众多,但实际意义不大。为避免这些无用警告,只需在.pro文件中加入相应的代码即可。上述步骤详细阐述了如何在QT项目中处理外部库问题,具体操作参考博客园作者“浇筑菜鸟”的原油源码文章。
海豚MQTT-Mosquitto(1)
在决定使用MQTT协议后,搭建MQTT服务器的首要任务是选择MQTT Broker。虽然云平台提供了付费服务,但个人项目成本较高,因此个人用户可能会选择自建服务器,如之前双十一购买的低配服务器,非常适合实验用途。
在选择后台方案时,市场上MQTT Broker选项众多。早期,我曾参考过一些资料,那时Mosquitto因其轻量级和C语言实现的优点,是我的首选。然而,鉴于其更新不频繁且扩展功能有限,上一次搭建过程中遇到不少困难,这次我决定寻找更为现代化的解决方案,尽管它曾是我的起点。
安装和运行Mosquitto在Centos服务器上相对简单,只需要几个命令即可。为了保证安全性,我关闭了默认的匿名访问,通过创建adam用户并存储在/etc/mosquitto/clipasswd文件中,并设置了用户密码登录。接着,我修改了mosquitto.conf文件,强制客户端使用用户名和密码进行认证,并重启了服务。
接下来,我开始转向SSL加密,需要生成自签名的证书。通过一系列命令,NTG源码我生成了cacert.pem, server.crt, 和server.key文件。然后,我修改了mosquitto.conf,将非加密端口绑定到本地,添加了SSL相关配置,并重启了服务。测试连接时,确保使用正确的域名和证书文件。
然而,仅此还不够,我需要对访问权限进行控制。这超出了Mosquitto的基本功能,需要借助第三方插件mosquitto-auth-plug来实现。但该插件已停止维护,且与我使用的mosquitto-1.6.版本存在兼容性问题。我下载了对应版本的源码和openssl,进行了编译,并对auth-plug.c文件进行了必要的修改。接着,我将mosquitto的动态库调整到正确位置,并在Makefile中添加了链接参数。
在配置mosquitto时,我删除了之前用到的密码文件,转而依赖数据库管理。我创建了数据库表,定义了新的权限规则,并利用mosquitto的np工具生成用户密码,将其写入数据库。至此,通过MySQL控制用户登录和权限的Mosquitto配置已完成。
最后,为了测试MQTT服务器的openconnect源码性能,我附带了一个压测工具。通过以上步骤,一个安全且可扩展的MQTT服务器已经搭建完毕,满足了对用户访问权限的控制需求。
黑群晖怎样搭建mqtt服务器
黑群晖搭建MQTT服务器的方法如下: 1. 安装MQTT服务软件:首先,你需要在黑群晖上安装MQTT服务软件。你可以选择一些流行的MQTT服务器软件,如Eclipse Mosquitto或VerneMQ等。你可以通过黑群晖的软件包管理器或者从官方渠道下载并安装这些软件。 2. 配置MQTT服务器:安装完成后,你需要对MQTT服务器进行配置。这包括设置服务器监听端口、配置用户名和密码、设置允许的连接数等。具体配置方式会根据你选择的MQTT软件有所不同,但通常都会在软件的配置文件中进行设置。 3. 启动并测试MQTT服务器:配置完成后,启动MQTT服务器,并使用测试工具或客户端程序测试服务器的连通性和功能。确保服务器可以接收和发送消息,并且根据你的配置进行相应的响应。 详细解释: 安装MQTT服务软件:黑群晖作为一个基于Linux的操作系统,可以通过多种途径安装软件。你可以选择通过黑群晖自带的软件包管理器进行安装,或者从MQTT软件的官方网站下载源代码进行编译安装。安装过程需要注意依赖项的满足和配置。 配置MQTT服务器:安装完MQTT软件后,需要根据实际需求对服务器进行配置。这包括设置服务器的监听端口,通常默认为;设置用户名和密码以增加安全性;调整最大连接数等参数以满足系统要求。这些配置通常在软件的配置文件中进行。 启动并测试MQTT服务器:完成配置后,RustDesk源码启动MQTT服务器,并确保其正常运行。你可以使用MQTT客户端程序连接到服务器,发送和接收消息以测试服务器的功能。确保服务器能够按照你的配置进行响应,并且网络连接正常。 通过以上步骤,你应该可以在黑群晖上成功搭建一个MQTT服务器。请注意,具体的操作步骤可能会根据你选择的MQTT软件和黑群晖版本有所不同,建议参考相关软件的官方文档进行操作。用mosquitto+paho+protobuf实现mqtt的示例代码
mqtt通信示例代码利用mosquitto+paho+protobuf实现。mosquitto是一款轻量级的mqtt服务器实现,适用于多种环境。示例代码中,服务器搭建在阿里云服务器上,使用mosquitto和mosquitto-clients工具,安装命令为:
sudo apt install mosquitto mosquitto-clients
验证服务是否启动,如未启动,使用命令
sudo systemctl start mosquitto
启动服务。实现客户端与服务器间的通信时,使用
mosquitto_sub -h localhost -p -t "demo/1"
进行订阅,和
mosquitto_pub -h localhost -p -t "demo/1" -m "test"
进行发布。在topic配置中,使用"/"进行划分,支持单层通配符("+")和多层通配符("#")来匹配特定主题。
服务器配置在/etc/mosquitto/mosquitto.conf文件下,或在/etc/mosquitto/conf.d/目录下的port.conf文件中,可以自定义监听端口。配置密码文件使用命令
sudo mosquitto_passwd -c /etc/mosquitto/passwd username
,允许匿名访问可通过修改配置文件来实现。
对于c++部分,使用mosquitto库与protobuf结合,完成消息订阅与发布。代码示例在GitHub上提供,包含在proto目录下的proto文件、src目录下的pub_simple.cpp和sub_callback.cpp文件。在proto目录下生成消息定义,src目录下的文件执行发布与订阅操作。为了简化编译过程,提供了一个脚本,确保用户能够轻松获取所需库文件,无论是树莓派还是服务器上都能顺利运行。
paho库是多平台多语言的mqtt客户端库,支持多种编程语言,具备丰富的示例代码和文档,适合集成于其他语言的项目中。对于c/c++项目,使用mosquitto库已经足够高效,paho在某些特定场景下使用可能较为复杂,不如直接使用mosquitto库来得简便。
完整的c++mosquitto客户端使用protobuf进行消息发布和订阅的代码位于GitHub仓库中,提供了一个完整的示例环境,用户可直接运行,无需额外编译步骤,适配于多种开发环境。
在云服务器上搭建了mqtt,为什么手机连接不上mqtt,要怎么做才能连接上?求求大神帮忙
MQTT协议是广泛应用的物联网协议,使用测试MQTT协议需要MQTT的代理。有两种方法使用MQTT服务,一是租用现成的MQTT服务器,如阿里云,百度云,华为云等公用的云平台提供的MQTT服务,使用公用的MQTT服务器的好处是省事,但如果仅仅用于测试学习还需要注册帐号,灵活性差些,有的平台还需要付费。另一方法是自己使用开源的MQTT组件来搭建。
MQTT服务器非常多,如apache的ActiveMQ,emtqqd,HiveMQ,Emitter,Mosquitto,Moquette等等。
这里介绍的是用轻量级的mosquitto开源项目来搭建一个属于自己的MQTT服务器。
第一步:需要安装一台linux主机,这不多介绍,可以使用真机安装也可以使用虚拟机安装。如果仅仅是自己测试使用都可以。
第二步:下载mosquitto需要的依赖
sudo apt-get install libssl-devsudo apt-get install uuid-devsudo apt-get install cmake
第三步:下载mosquitto并解压,现在mosquitto官网最新的版本是1.5.1
tar xzvf mosquitto-1.5.1.tar.gz
第四步:编译
cd mosquitto-1.5.1/
make
make install
第五步:启动mosquitto
./mosquitto -v
: mosquitto version 1.5.1 starting
: Using default config.
: Opening ipv4 listen socket on port .
: Opening ipv6 listen socket on port .
这时候mosquitto就会以默认的参数启动。如果需要带配置文件可以修改配置文件mosquitto.conf,
启动时候加上参数 -c,
./mosquitto -c mosquitto.conf
可以看到,mosquitto监听的端口为.
这时候我们的MQTT服务器就搭建好了。可找一个mqtt客户端来测试一下。
先发布一个主题“home/garden/fountain/2”
内容是“hello world”
这时候在mosquitto会打印出下面的log
: New connection from ..1. on port .
: New client connected from ..1. as MQTT_FX_Client (c1, k).
: No will message specified.
: Sending CONNACK to MQTT_FX_Client (0, 0)
: Received PINGREQ from MQTT_FX_Client
: Sending PINGRESP to MQTT_FX_Client
: Received PUBLISH from MQTT_FX_Client (d0, q0, r0, m0, 'home/garden/fountain/2', ... ( bytes))
: Received PINGREQ from MQTT_FX_Client
: Sending PINGRESP to MQTT_FX_Client
订阅主题“home/garden/fountain/2”
可以看到收到了自己发布的消息。
用wireshark抓包
可以看到抓到了一个MQTT的publish的报文。
Linux搭建MQTT服务器(mosquitto)并使用
### MQTT与Linux环境搭建
MQTT(消息队列遥测传输)是ISO标准下基于发布/订阅范式的消息协议,适用于硬件性能受限、网络状况不佳的远程设备。它在TCP/IP协议族上运行,适用于物联网(IoT)场景,如传感器通信、医疗设备、智能家居等。
**Linux上MQTT环境搭建
**为了在Linux系统中部署MQTT服务器,以CentOS7为例,遵循以下步骤搭建环境。
**1. 安装必备软件
**确保系统具备基础软件包,为后续操作做准备。
**2. 下载Mosquitto
**选择稳定版本1.6.8,避免因新版本的兼容性问题导致的依赖缺失。从官方网站mosquitto.org下载,或通过wget命令直接下载并传输至服务器。
**3. 解压、编译与安装
**解压下载的包,执行编译与安装命令。遇到libmosquitto.so.1找不到的问题时,通过修改链接路径,确保动态链接库的可用性。
**4. 创建配置文件
**替换默认example配置文件,根据需求调整端口、密码文件位置、监听端口、绑定网卡及日志记录等参数。
**5. 创建用户组与用户
**创建mosquitto用户组与用户,确保程序运行权限正确。如不需特定用户,考虑修改配置文件以适应环境。
**6. 启动、查看与关闭程序
**启动mosquitto服务,使用命令行工具检查进程状态与执行关闭操作。默认后台运行,通过ps命令查看后台进程。
**7. 本地测试
**使用订阅者与发布者工具,设置相同topic进行消息交换。发布者发送内容至订阅者,验证消息传递。
**8. 修改默认配置
****1. 关闭匿名用户登录
**在mosquitto.conf中修改allow_anonymous节点,设置为false,禁用匿名登录功能。
**2. 设置用户密码文件路径
**在配置文件中指定password_file节点,配置用户密码文件路径,确保密码存储安全。
**3. 创建自定义用户
**通过命令行创建用户,并设置密码。注意用户信息存储于指定路径的配置文件中,密码已加密。
**4. 重启mosquitto服务
**完成配置修改后,重启mosquitto服务,确保新配置生效。
**Python实现订阅与发布
**在Python环境中,使用MQTT库实现订阅者与发布者功能。启动订阅者并连接至MQTT服务器,验证连接状态。通过发布者发送消息至指定topic,订阅者接收并显示消息内容。
5-Openwrt MQTT client使ç¨
å¨mosquittoéé¢æ个clientç®å½ï¼éé¢å°±æ¯ä½¿ç¨libmosquittoå®ç°ç客æ·ç«¯ç¨åºï¼å°è£ æmosquitto_subåmosquitto_pubå½ä»¤è¡ã
æ以æ°å»ºä¸ä¸ªè·clientåä¸çº§ï¼èªå·±çclientï¼æ·»å 对åºçæ件
Makefileçå 容
main.cçå 容
myclient.hçå 容
å¤å±çmosquitto/src/Makefileéé¢æ·»å myclientæ件çç¼è¯
ç¼è¯æµè¯ä¸åæ£å¸¸ï¼æ¥ä¸å»æ·»å mqttçå 容
mqtt clientéé¢æ主è¦çå°±æ¯å 个åè°å½æ°ï¼å è°ç¨lib_init,æ£å¸¸åï¼å°±è¿åªå个callbackï¼ç¶åå¨callbackéé¢åé»è¾ã
ååè°å½æ°çå 容
é»è¾åºè¯¥ä¹æ¯è¾ç´è§ï¼å½connectæååï¼å¨åè°å½æ°éé¢è®¢é test1主é¢çå 容ï¼ç¶ååå¸test2主é¢çå 容ã
æ¶å°å å®¹å°±å¨ myclient_message_callback åè°éé¢æå°å¤çã
æ£å¸¸æ åµæ们é½ä¼è®©å®¢æ·ç«¯çè¿æ¥åä¸äºè´¦å·å¯ç ç设置ï¼é¿å å«äººæ»å»ã
å°allow_anonymousæ¹æä¸å 许å¿åç»éï¼å¹¶å¶å®pwfileã
vim /etc/mosquittoConf/mosquitto.conf
å¨ubuntuä¸é¢ä½¿ç¨mosquitto_passwdçæå¯ç
å°±ä¼å¨pwfileæ件ä¸çæè´¦å·åå å¯çå¯ç root/admin
è¿æ¯åç»éçæ¶åå°±éè¦-u root -P adminè¿è¡ç»é
mosquittoæä¾äºmosquitto_passwdå½ä»¤æ¥çæè´¦å·å¯ç çï¼ä¸è¿è¿ä¸ªæ¹å¼ä¸å欢ï¼å 为没åæ³å®å¶åèªå·±æ³è¦çè´¦å·å¯ç å å¯æ¹å¼ï¼æ以åäºä¸äºå°æ¹å¨ã
å¨myclientéé¢å æ们æ³è¦çå å¯æ¹å¼ï¼ç¶åå¨mosquitto brokerçæºç éé¢æ·»å 对åºç解å¯æ¹å¼å³å¯ã
å¦ä¸ï¼è´¦å·ä¸ºclient_nameï¼ç¶åéè¿rsaåbaseçæå¯ç ï¼myclientçè¯ä¸è°ç¨ mosquitto_username_pw_set å½æ°ã
ç¶åå¨mosquitto brokeréé¢æ·»å 解å¯ï¼ä½äºmosquitto/src/security.cæ件ç mosquitto_unpwd_check å½æ°éé¢ã
å¦ä¸ä¸ªå å¯æ¹å¼å°±æ¯SSL认è¯ï¼ç»å®¢æ·ç«¯æä¾ç¸åºçè¯ä¹¦ï¼åé ç½®åè®®(mqtt or websockets)ä¸æ ·ï¼å¨é ç½®æ件çå¬ç端å£ä¸é¢å¯ä»¥æ·»å sslçé ç½®é项ï¼æ¯ä¸ªporté½å¯ä»¥åç¬é ç½®sslçè¯ä¹¦å å容ã
å¦ä¸ï¼ä»ç«¯å£è¿æ¥è¿æ¥ç设å¤éè¦ä¸é¢çè¯ä¹¦è¦æ±
设å¤ç认è¯æåå认è¯ååå认è¯ä¸¤ç§ï¼
åå认è¯ï¼åªéè¦æä¾caè¯ä¹¦
åå认è¯ï¼éè¦ca,pem,keyä¸ä¸ª
ææ¥éª¤ä¸æ¥ä¸æ¥æ§è¡ï¼çæè¯ä¹¦ï¼éé¢ä¹å¯ä»¥æå®ååæ°ï¼æææ¶é´ï¼ï¼
æä¸é¢çæ¥éª¤å¯ä»¥çæå¦ä¸æ件
å¨æå¡å¨ç«¯éè¦æ¾ä¸ä¸ªæ件
å¦ææ¯åå认è¯ï¼å®¢æ·ç«¯åªéè¦ä¸ä¸ªæ件
å¦ææ¯åå认è¯ï¼å®¢æ·ç«¯åªéè¦ä¸ä¸ªæ件
æ¥çè¯ä¹¦çæææ¶é´
如何搭建自己的MQTT服务器
搭建个人MQTT服务器,首选轻量级开源项目mosquitto。首先,在Linux系统上安装,可选择使用虚拟机或真机环境。使用命令行安装所需的依赖库:
sudo apt-get install libssl-dev
sudo apt-get install uuid-dev
sudo apt-get install cmake
其次,下载并解压mosquitto最新版本1.5.1。操作步骤如下:
tar xzvf mosquitto-1.5.1.tar.gz
进入解压后的目录,编译并安装:
cd mosquitto-1.5.1/
make
make install
启动mosquitto服务,命令如下:
./mosquitto -v
系统会自动以默认参数启动MQTT服务器,监听端口为。如需自定义配置文件启动服务,使用参数 -c,命令如下:
./mosquitto -c mosquitto.conf
至此,MQTT服务器搭建完成。使用MQTT客户端进行测试,发布主题“home/garden/fountain/2”,内容为“hello world”。客户端连接服务器后,会记录相关日志信息,包含新连接建立、客户端连接成功、未指定will消息、发送CONNACK、PINGREQ与PONG等交互过程。客户端订阅同一主题后,可接收到发布消息。使用Wireshark抓包工具,验证MQTT报文传递过程,直观展示消息发布与订阅的完整流程。