皮皮网

【eclipse显示源码】【今天吃什么 源码】【黑客锁机源码】mosquitto 源码

2024-12-27 14:27:53 来源:活动接龙统计源码下载

1.海豚MQTT-Mosquitto(1)
2.MQTT Broker 选型
3.Linux C/C++开发(后端/音视频/游戏/嵌入式/高性能网络/存储/基础架构/安全)
4.5-Openwrt MQTT client使用
5.黑群晖怎样搭建mqtt服务器
6.2022 年值得尝试的 7 个 MQTT 客户端工具

mosquitto 源码

海豚MQTT-Mosquitto(1)

       在决定使用MQTT协议后,搭建MQTT服务器的首要任务是选择MQTT Broker。虽然云平台提供了付费服务,但个人项目成本较高,因此个人用户可能会选择自建服务器,如之前双十一购买的eclipse显示源码低配服务器,非常适合实验用途。

       在选择后台方案时,市场上MQTT Broker选项众多。早期,我曾参考过一些资料,那时Mosquitto因其轻量级和C语言实现的优点,是我的首选。然而,鉴于其更新不频繁且扩展功能有限,上一次搭建过程中遇到不少困难,这次我决定寻找更为现代化的解决方案,尽管它曾是我的起点。

       安装和运行Mosquitto在Centos服务器上相对简单,只需要几个命令即可。为了保证安全性,我关闭了默认的匿名访问,通过创建adam用户并存储在/etc/mosquitto/clipasswd文件中,并设置了用户密码登录。接着,我修改了mosquitto.conf文件,强制客户端使用用户名和密码进行认证,并重启了服务。

       接下来,我开始转向SSL加密,需要生成自签名的证书。通过一系列命令,我生成了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服务器的性能,我附带了一个压测工具。通过以上步骤,一个安全且可扩展的黑客锁机源码MQTT服务器已经搭建完毕,满足了对用户访问权限的控制需求。

MQTT Broker 选型

       MQTT Broker选型

       在构建分布式系统时,选择合适的MQTT Broker至关重要,它负责接收发布者发布的消息并将其分发给不同的订阅者。市面上有许多MQTT Broker可供选择,以下是一些常用选项的对比与分析。

       Mosquitto

       Mosquitto是由Eclipse出品的开源MQTT Broker,基于C/C++语言编写,当前版本为1.5.8。其特点包括支持MQTT 3.1/3.1.1协议,但性能上存在一些限制,如内存优化、多线程的锁机制等。它适合运行在低功耗设备上,如嵌入式传感器、手机和微处理器,但不适用于大规模云服务。官方文档显示其理论支持约万连接,实际使用中还需根据具体情况进行评估。

       EMQ (emqttd)

       EMQ,一款国人开发的开源MQTT Broker,目前版本为2.0和3.0,2.0版本支持本地共享订阅,3.0版本新增集群共享订阅功能。EMQ具有完整QoS支持、单节点万连接能力、分布式集群支持、多种验证插件(如LDAP、MySQL、PostgreSQL等)以及API、Web监控界面等特性。官方宣称支持MQTT 3.1、3.1.1和5.0版本,源达指标源码并在性能上做了优化。然而,开源版本不支持服务器内部消息持久化,这是其一个显著限制。

       HiveMQ

       HiveMQ是一款企业级MQTT Broker,使用Java编写,功能丰富,支持MQTT 3.1、3.1.1和5.0版本,完整QoS支持,分布式集群,持久化支持,流量控制,IPv6支持等。其唯一限制在于高昂的费用,没有公开源码供参考。集群基于Jgroups,数据同步通过自定义一致性哈希和VectorClock实现。多线程和并发控制使用Google的guava库,代码质量高。

       MqttWk

       MqttWk是一个基于nutzboot、netty、redis和kafka实现的MQTT服务开源Broker,代码简洁易懂。它支持MQTT和Websocket连接方式,集群功能和消息分发重试,但存在一些限制,如消息队列非队列结构、消息分发重试机制较差、主题限制等。它是上生产的项目,经历过2万设备连接的考验。

       Jmqtt

       Jmqtt是语音导览源码一个基于Java的开源MQTT Broker,对现有开源Broker进行了优化,特别是在CONNECT处理和Session过期管理方面。支持MQTT和Websocket连接方式,使用RocksDB进行本地存储,但不支持集群和SSL。

       Moquette

       Moquette是一个功能齐全的Java编写的开源MQTT Broker,提供完整的QoS服务和认证方式,支持多种持久化存储。然而,0.版本中存在内存泄漏问题,官方修复后发布为irubant/moquette。其集群功能仅使用Hazelcast作为消息总线,不支持共享订阅。

       综上所述,选择合适的MQTT Broker需考虑应用的具体需求,包括连接数量、协议版本、性能要求、集群支持、消息持久化、安全认证等因素。在选择时,应充分评估各Broker的特性和限制,以满足实际应用场景的需要。

Linux C/C++开发(后端/音视频/游戏/嵌入式/高性能网络/存储/基础架构/安全)

       C++后台开发,也称为C++/Linux服务器开发,在BAT公司中拥有众多职位,其中鹅厂对C++后台开发岗位的需求尤为迫切。尽管该岗位对技术要求较高,但追求大厂工作的朋友仍可积极争取。

       对于具有C/C++语言基础的朋友来说,在面试后台岗位时,常常会疑问:面试大厂时,技术水平需达到何种程度才能入职?以下是针对校招和社招的不同要求。

       对于校招,技术层面的要求相对较低。掌握C with STL以及常见的数据结构与算法,且能完成leetcode中等难度以下题目的笔试者,已有分。如果对STL、auto、lambda等用法熟练,还能加分。对于实习生来说,良好的表现即可被录用,之后会再进行网络编程和Linux方面的培训。

       因此,校招更看重的是基础和学习能力。实习期间,会根据技术学习进度决定是否发放offer。当然,如果提前掌握Linux环境编程、网络编程等技术,更能加分,因为各个赛道都有内卷现象。

       对于社招,C++后台开发岗位的核心技术点有三个:代码能力、架构能力、安全能力及工程素养。掌握这三方面的技术,面试通过的概率较高。至于在大厂的职级体系中确定自己的岗位,会有更加细化的标准。

       不熟悉的朋友,可以先领取一份Linux c/c++开发新手学习资料包(入坑不亏):LinuxC++后台开发文档视频+代码资料学习路线免费领取

       Linux C/C++开发1、精进基石专栏

       (一)数据结构与算法

       (二)设计模式

       (三)c++新特性

       (四)Linux工程管理

       2、高性能网络设计专栏

       (一)网络编程异步网络库zvnet

       (二)网络原理

       (三)自研框架:基于dpdk的用户态协议栈的实现(已开源)

       3、基础组件设计专栏

       (一)池式组件

       (二)高性能组件

       (三)开源组件

       4、中间件开发专栏

       (一)Redis

       (二)MySQL

       (三)Kafka

       (四)Nginx

       5、开源框架专栏

       (一)游戏服务器开发skynet (录播答疑)

       (二)分布式API网关

       (三)SPDK助力MySQL数据落盘, 让性能腾飞(基础设施)

       (四)高性能计算CUDA (录播答疑)

       (五)并行计算与异步网络引擎workflow

       (六)物联网通信协议mqtt的实现框架mosquitto

       6、云原生专栏

       (一)Docker

       (二)Kubernetes

       7、性能分析专栏

       (一)性能与测试工具

       (二)观测技术bpf与ebpf

       (三)内核源码机制

       8、分布式架构

       (一)分布式数据库

       (二)分布式文件系统(录播答疑)

       (三)分布式协同

       9、上线项目实战

       (一)dkvstore实现(上线项目)

       (二)图床共享云存储(上线项目)

       (三)容器化docker部署

       (四)零声教学AI助手一代(上线项目)

       (五)魔兽世界后端TrinityCore (上线项目)

       、适宜的工程师人群(共分为8大群体)

       、配套书籍资料

       以上是系统学习课程大纲,需要系统学习或者领取视频资料点下方腾讯文档领取

       如果想在大厂快速提升C/C++开发方向的能力,这份学习体系是大家绕不过的具有参考意义的提升路线。通过学习路线,可以对Linuxc/c++开发方向的技术栈有清晰的认识。

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服务器的方法如下

       1. 安装MQTT服务软件:首先,你需要在黑群晖上安装MQTT服务软件。你可以选择一些流行的MQTT服务器软件,如Eclipse Mosquitto或VerneMQ等。你可以通过黑群晖的软件包管理器或者从官方渠道下载并安装这些软件。

       2. 配置MQTT服务器:安装完成后,你需要对MQTT服务器进行配置。这包括设置服务器监听端口、配置用户名和密码、设置允许的连接数等。具体配置方式会根据你选择的MQTT软件有所不同,但通常都会在软件的配置文件中进行设置。

       3. 启动并测试MQTT服务器:配置完成后,启动MQTT服务器,并使用测试工具或客户端程序测试服务器的连通性和功能。确保服务器可以接收和发送消息,并且根据你的配置进行相应的响应。

       详细解释

       安装MQTT服务软件:黑群晖作为一个基于Linux的操作系统,可以通过多种途径安装软件。你可以选择通过黑群晖自带的软件包管理器进行安装,或者从MQTT软件的官方网站下载源代码进行编译安装。安装过程需要注意依赖项的满足和配置。

       配置MQTT服务器:安装完MQTT软件后,需要根据实际需求对服务器进行配置。这包括设置服务器的监听端口,通常默认为;设置用户名和密码以增加安全性;调整最大连接数等参数以满足系统要求。这些配置通常在软件的配置文件中进行。

       启动并测试MQTT服务器:完成配置后,启动MQTT服务器,并确保其正常运行。你可以使用MQTT客户端程序连接到服务器,发送和接收消息以测试服务器的功能。确保服务器能够按照你的配置进行响应,并且网络连接正常。

       通过以上步骤,你应该可以在黑群晖上成功搭建一个MQTT服务器。请注意,具体的操作步骤可能会根据你选择的MQTT软件和黑群晖版本有所不同,建议参考相关软件的官方文档进行操作。

年值得尝试的 7 个 MQTT 客户端工具

       随着物联网行业的快速发展,MQTT协议被越来越多的公司及开发者所应用。在学习和使用MQTT的过程中,选择一个合适的客户端工具能够极大地提高开发效率,方便开发者探索MQTT特性并调试物联网应用,缩短开发周期。

       目前市面上的MQTT客户端工具种类繁多,不同工具在功能侧重点上也有所不同。对于MQTT新手乃至专家来说,如何挑选一个合适的客户端工具是一个挑战。本文根据实际使用经验,筛选并整理了截至年最新、最实用的7个MQTT客户端工具,按桌面端、浏览器端、命令行分类列出,旨在帮助MQTT开发者快速找到合适工具,进行MQTT连接测试。

       为了选择一个优秀的MQTT客户端工具,开发者应关注工具是否具备以下特性:易于使用、支持多种连接方式(如MQTT/TCP、MQTT/TLS、MQTT/WebSocket)、提供主题订阅和消息收发功能。

       下面是精选的7个MQTT客户端工具及其特点:

MQTT X

       MQTT X是一款跨平台MQTT 5.0客户端工具,支持macOS、Linux、Windows,且支持MQTT消息格式转换。它采用了聊天软件的形式简化了操作界面,用户可以快速创建连接并同时建立多个连接客户端,方便测试连接、发布、订阅功能及其他特性。

MQTT Explorer

       MQTT Explorer是一个全面的MQTT客户端,其亮点是提供MQTT主题的结构化展示及动态预览。它还能对收到的payload消息进行差异对比和可视化图表展示。但只能创建一个单一客户端连接,无法满足同时在线需求。

MQTT.fx

       MQTT.fx是由个人开发的MQTT客户端,适用Apache License 2.0协议但未提供源码。该工具已停止维护,并转为由Softblade公司资助开发并发行商业版本MQTT.fx® 5.0,采用收费许可证方式经营。它使用JavaFX技术开发,支持多种加密方式、证书配置,且允许指定HTTP代理服务器。但在MQTT over WebSocket测试场景中无法使用。

MQTT X Web

       MQTT X Web是一款开源的MQTT 5.0浏览器客户端,也是在线MQTT WebSocket客户端工具。开发者无需下载安装,即可在浏览器中快速连接MQTT服务器,加速开发和调试过程。

MQTT X CLI

       MQTT X CLI是一款全开源、强大且易用的MQTT 5.0命令行客户端工具。它旨在帮助开发者在无需图形界面的情况下快速开发和调试MQTT服务与应用。

NanoMQ CLI

       NanoMQ是一款用于物联网边缘的轻量级MQTT消息服务器,内置性能测试工具bench和MQTT测试客户端。

Mosquitto CLI

       Mosquitto是开源(EPL/EDL许可)的消息代理,附带两个命令行MQTT客户端工具:mosquitto_pub和mosquitto_sub。它支持TLS证书连接、代理服务器连接,并在debug模式下提供更详细的消息信息。

       在选择MQTT客户端工具时,请根据自身需求考虑工具的易用性、功能特性以及是否满足开发需求。希望本文提供的信息能帮助您快速找到合适的MQTT客户端工具。