精华内容
下载资源
问答
  • 2022-05-17 00:41:18

    1、第三方企业级开源的MQTT服务(自带PC图形界面客户端mqttx不会用):

    产品概览 | EMQX 文档

    EMQX开源版部署后,官方默认账号密码为admin/public

    2、开源的MQTT服务及客户端(我们只用其linux客户端):

    https://www.csdn.net/tags/OtDaQgxsODkyMTMtYmxvZwO0O0OO0O0O.html

    yum install mosquitto安装后,就自带了mqtt客户端和服务端(目前并不需要独立安装什么mosquitto-clients,想装也装不到!)。

    其中启动服务端:systemctl start mosquitto(前提确保1883端口没有被占用!),用客户端无非是pub和sub,以下分别是客户端实现sub主题和pub发布消息,并且不用自带的mosquitto服务,二是用1中的第三方的emqx服务,分别直接用mosquitto_sub、mosquitto_pub命令来实现客户端sub和pub:

    mosquitto_sub -h sys.aiotos.net -t "iotostest" -v -u admin -P public
    mosquitto_pub -h sys.aiotos.net -t "iotostest" -m "hello iotos" -u admin -P public

    mosquitto_sub命令运行的时候会阻塞等待消息接受,在新窗口进行mosquitto_pub时,对应的消息message就会到前面sub阻塞中的到打印输出!至此,实现第三方通用 MQTT客户通过用户名密码连接访问其他企业级MQTT服务实现sub和pub通信!(即时第三方MQTT服务封装再多,比如集群、黑白名单等等非常多的功能,但是基本的都是兼容MQTT协议,最基本都是能通用的,不会非得自家客MQTT客户端才能用!)

    其中,指令使用分别解释如下:

    1)订阅主题

    mosquitto_sub  -h localhost -t "iotos_test" -v -u admin -P public

    //mosquitto_sub : 订阅主题命令

    //-h : 指定连接的MQTT服务器 ,此处使用本地主机localhost

    //-t : 指定订阅的主题,此处为mqtt

    //-v : 打印更多的调试信息

    // -u  指定broker访问用户

    // -P  指定broker访问密码

    2)发布主题

    mosquitto_pub  -h localhost -t "iotos_test" -m "hello iotos" -u admin -P public

    //mosquitto_pub : 发布消息的命令

    //-h : 指定连接的MQTT服务器,此时使用本地主机

    //-t : 指定订阅的主题,从处为mqtt

    //-m : 指定发布的消息,此处为"hello mqtt

    // -u  指定broker访问用户

    // -P  指定broker访问密码

    更多相关内容
  • 使用接口 mosquitto_tls_set 使客户端支持 SSL/TLS,接口说明:https://mosquitto.org/api/files/mosquitto-h.html#mosquitto_tls_set int mosquitto_tls_set(struct mosquitto *mosq, const char *cafile, const ...

    使用接口 mosquitto_tls_set 使客户端支持 SSL/TLS,接口说明:https://mosquitto.org/api/files/mosquitto-h.html#mosquitto_tls_set

    int mosquitto_tls_set(struct mosquitto *mosq, const char *cafile, const char *capath, const char *certfile, const char *keyfile, int (*pw_callback)(char *buf, int size, int rwflag, void *userdata))
    {
    #ifdef WITH_TLS
    	FILE *fptr;
    
    	if(!mosq || (!cafile && !capath) || (certfile && !keyfile) || (!certfile && keyfile)) return MOSQ_ERR_INVAL;
    
    	mosquitto__free(mosq->tls_cafile);
    	mosq->tls_cafile = NULL;
    	if(cafile){
    		fptr = mosquitto__fopen(cafile, "rt", false);
    		if(fptr){
    			fclose(fptr);
    		}else{
    			return MOSQ_ERR_INVAL;
    		}
    		mosq->tls_cafile = mosquitto__strdup(cafile);
    
    		if(!mosq->tls_cafile){
    			return MOSQ_ERR_NOMEM;
    		}
    	}
    
    	mosquitto__free(mosq->tls_capath);
    	mosq->tls_capath = NULL;
    	if(capath){
    		mosq->tls_capath = mosquitto__strdup(capath);
    		if(!mosq->tls_capath){
    			return MOSQ_ERR_NOMEM;
    		}
    	}
    
    	mosquitto__free(mosq->tls_certfile);
    	mosq->tls_certfile = NULL;
    	if(certfile){
    		fptr = mosquitto__fopen(certfile, "rt", false);
    		if(fptr){
    			fclose(fptr);
    		}else{
    			mosquitto__free(mosq->tls_cafile);
    			mosq->tls_cafile = NULL;
    
    			mosquitto__free(mosq->tls_capath);
    			mosq->tls_capath = NULL;
    			return MOSQ_ERR_INVAL;
    		}
    		mosq->tls_certfile = mosquitto__strdup(certfile);
    		if(!mosq->tls_certfile){
    			return MOSQ_ERR_NOMEM;
    		}
    	}
    
    	mosquitto__free(mosq->tls_keyfile);
    	mosq->tls_keyfile = NULL;
    	if(keyfile){
    		fptr = mosquitto__fopen(keyfile, "rt", false);
    		if(fptr){
    			fclose(fptr);
    		}else{
    			mosquitto__free(mosq->tls_cafile);
    			mosq->tls_cafile = NULL;
    
    			mosquitto__free(mosq->tls_capath);
    			mosq->tls_capath = NULL;
    
    			mosquitto__free(mosq->tls_certfile);
    			mosq->tls_certfile = NULL;
    			return MOSQ_ERR_INVAL;
    		}
    		mosq->tls_keyfile = mosquitto__strdup(keyfile);
    		if(!mosq->tls_keyfile){
    			return MOSQ_ERR_NOMEM;
    		}
    	}
    
    	mosq->tls_pw_callback = pw_callback;
    
    
    	return MOSQ_ERR_SUCCESS;
    #else
    	UNUSED(mosq);
    	UNUSED(cafile);
    	UNUSED(capath);
    	UNUSED(certfile);
    	UNUSED(keyfile);
    	UNUSED(pw_callback);
    
    	return MOSQ_ERR_NOT_SUPPORTED;
    
    #endif
    }
    

     虽然目的是单向无证书验证,但是从源代码看,必须传入一个存在的 cafile ,我是自己创建了证书,这个是任意的,只是为了让函数返回正确状态。

    接着配置SSL/TLS选项,不去验证服务器,否则肯定无法通过,使用接口mosquitto_tls_opts_set,第二参数传入 0即可,接口说明:https://mosquitto.org/api/files/mosquitto-h.html#mosquitto_tls_opts_set

    总结:

    在 mosquitto_connect 之前插入下面两句即可:

    mosquitto_tls_set(mosq,"/userdata/server.crt",NULL,NULL,NULL,NULL);

    mosquitto_tls_opts_set(mosq,0,NULL,NULL);

    展开全文
  • Mosquitto 客户端使用介绍

    千次阅读 2019-01-03 10:07:14
    简介 ​ Mosquitto是用C语言实现了MQTT(Message Queueing Telemetry Transport)协议的Broker,EMQ君... 本文重点介绍mosquito客户端的使用。 安装 Mosquitto安装,可以参考EMQ君之前写的Ubuntu上搭建Mosquitto ...

    简介

    ​ Mosquitto是用C语言实现了MQTT(Message Queueing Telemetry
    Transport)协议的Broker,EMQ君在本文对MQTT协议不做过多的赘述,关于 MQTT 协议的介绍读者可以阅读EMQ的MQTT协议介绍。 本文重点介绍mosquito客户端的使用。

    安装

    Mosquitto安装,可以参考EMQ君之前写的Ubuntu上搭建Mosquitto MQTT服务器

    参数介绍

    安装成功后,在终端运行mosquitto_sub --help 或 mosquitto_pub —help获取脚本参数说明:

    mosquitto_pub参数说明:

    -d  打印debug信息
    -f  将指定文件的内容作为发送消息的内容
    -h  指定要连接的域名  默认为localhost
    -i  指定客户端clientid,默认为附加进程ID的mosquitto_pub_
    -I  指定clientId前缀
    -m  消息内容
    -n  发送一个空(null)消息
    -p  连接端口号
    -q  指定QoS的值(0,1,2)
    -t  指定topic
    -u  用户名
    -P  用户密码    
    -V  指定MQTT协议版本
    --will-payload  指定一个消息,该消息当客户端与broker意外断开连接时发出。该参数需要与--will-topic一起使用
    --will-qos  Will的QoS值。该参数需要与--will-topic一起使用
    --will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。该参数需要与--will-topic一起使 用
    --will-topic  用户发送Will消息的topic
    

    mosquitto_sub参数说明

    -c  指定客户端clean_session是否保存。
    -d  打印debug信息
    -h  指定要连接的域名  默认为localhost
    -i   指定客户端clientid
    -I   指定clientId前缀
    -k  keepalive 每隔一段时间,发PING消息通知broker,仍处于连接状态。 默认为60秒.
    -q 指定希望接收到QoS为什么的消息  默认QoS为0
    -R 不显示陈旧的消息
    -t 订阅topic
    -v 打印消息
    --will-payload  指定一个消息,该消息当客户端与broker意外断开连接时发出。该参数需要与--will-topic一起使用
    --will-qos  Will的QoS值。该参数需要与--will-topic一起使用
    --will-retain 指定Will消息被当做一个retain消息(即消息被广播后,该消息被保留起来)。该参数需要与--will-topic一起使>用
    --will-topic  用户发送Will消息的topic
    

    使用

    介绍Mosquitto客户端的使用,少不了要和MQTT Broker结合进行发布订阅,本文中MQTT Broker使用的是EMQ,EMQ的安装,可参考EMQ君之前文章介绍的Ubuntu上搭建EMQ MQTT服务器。EMQ君在本文中介绍两种常见的连接使用MQTT、MQTT over SSL。

    MQTT

    mosquitto简单的MQTT订阅发布:

    订阅

    mosquitto_sub -t mqtt -u test -P t123456

    发布

    mosquitto_pub -h localhost -t mqtt -m "hello world" -u test -P t123456

    在订阅客户端可收到消息hello world

     

    个人使用例子:

    mosquitto_sub -h "127.0.0.1" -p 1883 -t "location
    /wys"

    展开全文
  • 基于Java语言实现了一个Mosquitto客户端demo,该demo是一个maven工程,demo运行的前提是mosquitto已经安装成功,安装步骤请参考http://blog.csdn.net/wangpf2011/article/details/78542018。 Mosquitto为MQTT的一个...
  • MQTT服务器mosquitto客户端paho的使用

    MQTT服务器mosquitto和客户端paho

    mosquitto安装使用

    1.mosquitto下载

    从官网下载最新版本:

    https://mosquitto.org/download/

    以下是mosquitto2.0.14windowsX64版本:

    mosquitto-2.0.14-install-windows-x64.exe

    2.安装

    直接点击下一步:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G7nIjqRT-1640658854630)(MQTT服务器安装- Mosquitto.assets/image-20211228093425959.png)]
    可更换路径,我安装在E盘下:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zcrx3Hml-1640658854635)(MQTT服务器安装- Mosquitto.assets/image-20211228093753481.png)]

    3.配置

    进入“E:\mosquitto”安装目录下,可以查看mosquitto的配置文件及命令。

    模块功能
    mosquitto.confmosquitto服务器的配置文件
    mosquitto用来开启broker
    mosquitto_passwd用来设置用户的账号与密码
    mosquitto_pub用来发布消息
    mosquitto_sub用来订阅消息
    pwfile.example通过mosquitto_passwd来存储用户的账号密码的文件

    主配置文件 mosquitto.conf

    #设置不允许匿名登录
    allow_anonymous false
    #设置账户密码文件位置为安装目录下的pwfile.example  如 E:\mosquitto\pwfile.example
    password_file /mosquitto/pwfile.example
    

    添加用户名密码

    打开命令行窗口cmd:

    mosquitto_passwd -c pwfile.example username 使用-c 参数会导致清空密码文件,重新插入用户
    mosquitto_passwd pwfile.example username 不使用-c 表示追加用户,不影响旧用户

    E:\mosquitto>mosquitto_passwd.exe pwfile.example xxxx (回车)
    Password:                               (输入两次密码)
    Reenter password:
    

    查看用户名密码

    添加成功后pwfile.example会出现刚刚添加的用户信息。

    4.简单发布订阅

    1. 启动服务

    重新打开命令行窗口,使用命令mosquitto.exe -c mosquitto.conf启动服务。
    E:\mosquitto>mosquitto.exe -c mosquitto.conf

    默认服务:127.0.0.1:1883

    1. 订阅消息

      新开一命令行窗口,订阅消息 mosquitto_sub -u name -P pwd -t ‘test’ -v

      当执行发布消息命令时,该窗口会接收到订阅消息。
      在这里插入图片描述

    2. 发送消息
      新开一个命令行窗口,发送消息mosquitto_pub -u name -P pwd -t 'test' -m '消息内容'
      在这里插入图片描述

    mosquitto_pub(发布)的用法

    用法:

    mosquitto_pub [-d] [-h hostname] [-i client_id] [-I client id prefix] [-p port number] [-q message QoS] [--quiet] [-r] { -f file | -l | -m message | -n | -s} [-u username [-P password] ] [ --will-topic topic [--will-payload payload] [--will-qos qos] [--will-retain] ] -t message-topic
    123
    

    选项:

    -d, –debug :开启debug选项

    -f, –file:把一个文件的内容做为消息的内容发送。经测试,支持txt文件,不支持doc等其他形式文件。

    -h, –host:说明所连接到的域名,默认是localhost

    -i, –id:客户端的ID号,如果没有指定,默认是mosquitto_pub_加上客户端的进程id,不能和–id_prefix同时使用。

    -I, –id-prefix :指定客户端ID的前缀,与客户端的进程ID连接组成客户端的ID,不能和–id同时使用。

    -l, –stdin-line:从总段读取输入发送消息,一行为一条消息,空白行不会被发送。

    -m, –message:从命令行发送一条消息,-m后面跟发送的消息内容。

    -n, –null-message:发送一条空消息。

    -p, –port:连接的端口号,默认是1883.

    -P, –pw:指定密码用于代理认证,使用此选项时必须有有效的用户名。

    -q, –qos:指定消息的服务质量,可以为0,1,2,默认是0.

    –quiet:如果指定该选项,则不会有任何错误被打印,当然,这排除了无效的用户输入所引起的错误消息。

    -r, –retain:如果指定该选项,该条消息将被保留做为最后一条收到的消息。下一个订阅消息者将能至少收到该条消息。

    -s, –stdin-file:从标准输入接收传输的消息内容,所有输入做为一条消息发送。

    -t, –topic:指定消息所发布到哪个主题。

    -u, –username:指定用户名用于代理认证。

    –will-payload:如果指定该选项,则万一客户端意外和代理服务器断开,则该消息将被保留在服务端并发送出去,该选项必须同时用–will-topic指定主题。

    –will-qos:指定Will的服务质量,默认是0.必须和选项 –will-topic同时使用.

    –will-retain:如果指定该选项,则万一客户端意外断开,已被发送的消息将被当做retained消息。必须和选项 –will-topic同时使用.

    –will-topic:指定客户端意外断开时,Will消息发送到的主题。


    mosquitto_sub(订阅)的用法

    用法:

    mosquitto_sub [-c] [-d] [-h hostname] [-i client_id] [-I client id prefix] [-k keepalive time] [-p port number] [-q message QoS] [--quiet] [-v] [ -u username [-Ppassword] ] [ --will-topic topic [--will-payload payload] [--will-qos qos] [--will-retain] ] -t message topic ...  1
    

    命令:

    mosquitto_sub 订阅到主题,接收到消息时打印
    选项:

    -c, –disable-clean-session:禁止’clean session’选项,即如果客户端断开连接,这个订阅仍然保留来接收随后到的QoS为1和2的消息,当改客户端重新连接之后,它将接收到已排在队列中的消息。建议使用此选项时,客户端id选项设为–id

    -d, –debug:开启debug选项

    -h, –host:说明所连接到的域名,默认是localhost

    -i, –id:客户端的ID号,如果没有指定,默认是mosquitto_pub_加上客户端的进程id,不能和–id_prefix同时使用。

    -I, –id-prefix:指定客户端ID的前缀,与客户端的进程ID连接组成客户端的ID,不能喝–id同时使用。

    -k, –keepalive:给代理发送PING命令(目的在于告知代理该客户端连接保持且在正常工作)的间隔时间,默认是60s

    -p, –port:说明客户端连接到的端口,默认是1883

    -P, –pw:指定密码用于代理认证,使用此选项时必须有有效的用户名。

    -q, –qos:指定消息的服务质量,可以为0,1,2,默认是0.

    –quiet:如果指定该选项,则不会有任何错误被打印,当然,这排除了无效的用户输入所引起的错误消息。

    -t, –topic:指定订阅的消息主题,允许同时订阅到多个主题

    -u, –username:指定用户名用于代理认证。

    -v, –verbose:冗长地打印收到的消息。若指定该选项,打印消息时前面会打印主题名——“主题 消息内容”,否则,只打印消息内容

    –will-payload:如果指定该选项,则万一客户端意外和代理服务器断开,则该消息将被保留在服务端并发送出去,该选项必须同时用–will-topic指定主题。

    –will-qos:指定Will的服务质量,默认是0.必须和选项 –will-topic同时使用.

    –will-retain:如果指定该选项,则万一客户端意外断开,已被发送的消息将被当做retained消息。必须和选项 –will-topic同时使用.

    –will-topic:指定客户端意外断开时,Will消息发送到的主题。


    客户端paho安装和使用

    进入官网下载:

    https://www.eclipse.org/paho/index.php

    解压后直接安装使用。

    设置好服务地址tcp://127.0.0.1:1883,注:需要打开MQTT服务

    如图所示
    在这里插入图片描述

    展开全文
  • 网上可以找到的mosquitto真的不多,俺这种不是什么技术大牛的人搞...#例:在测试客户端subscribe方法时,使用下面的命令,发布一个topic为KCBZ的消息) mosquitto_pub -h 192.168.4.71 -p 1883 -t KCBZ -m 您的库存不足
  • MQTT mosquitto客户端Java库
  • MQTT mosquitto客户端Java库 源码
  • mosquitto 调用形式 源码 MainServer.h #ifndef _WJ_MAINSERVER_H #define _WJ_MAINSERVER_H #include <event.h> #include <mosquitto.h> class MainServer{ public: // single ...
  • 国内最活跃的Mosquitto沟通社区...异常断线(Mosquitto没有收到MQTT 的DISCONNECT报文)时,使用遗嘱机制,mqtt客户端在建立mqtt连接的时候,设置遗嘱(向什么topic发送什么数据):当前这个tcp连接断开的时候,Mosq...
  • 这里做的是上报阿里云平台 ...接下来就用mosquitto库自己实现mqtt客户端 使用了开源的iniparser库来操作配置文件,对于这些需要很多参数的程序,用一个配置文件来解决就很方便,可以了解一下iniparser库: ...
  • 客户端使用mosquitto的问题: 发现在linux中使用,不能在disconnect的回调函数中去调用mosquitto_reconnect或mosquitto_connect等函数,会造成pthread_mutex_unlock(&mosq->current_out_packet_mutex)死锁。...
  • 在对mqtt的学习过程中 一下的内容对我提供了帮助https://www.runoob.com/w3cnote/mqtt-intro.html 对mqtt的入门级介绍 很基础讲解了什么是mqtthttps://mosquitto.org/api/files/mosquitto-h.html 这个网站记载了几乎...
  • emqtt安全连接 单向连接 加密 ssl/tls mosquitto客户端ssl连接测试1 创建自签根证书和服务端证书2 设置 emqtt配置文件中 ssl/tls 单向连接参数3 mosquitto客户端安装, ssl单向安全连接mqtt服务器测试 前言 考虑到...
  • 一、mosquitto 1.1参数说明 -c 指定配置文件路径 -d 后台运行 -h 显示帮助 -p 指定端口号,不推荐跟-c配置文件指定端口号一起使用 -v 监控日志 1.2修改配置文件 cp mosquitto.conf.example mosquitto.conf vi ...
  • 原文参考连接:http://www.hivemq.com/blog/mqtt-client-library-encyclopedia-mosquitto-php1.mosquitto源码安装源码下载位置:http://mosquitto.org/files/source/选择版本mosquitto-1.4.9.tar.gz将文件复制到...
  • 在开发java版mosquitto客户端程序时需要使用paho库,如果开发的java客户端要用ssl功能,则需要Bouncy Castle库;在使用ssl功能时,需要证书文件进行进行身份认证,但在测试过程中,只自己制作ca并进行证书签发即可...
  • 由于项目需求,需要写一个连接到mosquitto服务器的客户端,用的版本是 <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15on</artifactId> <version&...
  • eclipseMosquitto源码客户端源码解析

    千次阅读 2022-03-29 14:51:43
    本文章目前只是对于客户端publish代码的运行逻辑分析,后面会根据代码的阅读慢慢补充上来,其中对结构体的描述篇幅比较大,如果觉得不想看,可直接跳到末尾观看运行流程图,如果文中有错误的地方请指出,我会马上...
  • MQTT客户端 struct mosquitto *mosq; void my_connect_callback(struct mosquitto *mosq, void *obj, int rc) { //printf("rc11: %d\n", rc); } void my_disconnect_callback(struct mosquitto *mosq, void...
  • 在开发Java版mosquitto客户端程序时需要使用paho库,如果开发的java客户端要用ssl功能,则需要Bouncy Castle库;在使用ssl功能时,需要证书文件进行进行身份认证,但在测试过程中,只自己制作ca并进行证书签发即可...
  • mosquitto源码分析

    2022-05-23 15:19:29
    由于前些天做的mqtt连接云平台项目测试过程中,发现了自身的代码在不良环境下,例如:网络断开、服务器断开的情况下,mqtt客户端无法感知连接已失效,仍然会继续向对端publish success。且在重新连接网络成功后,一...
  • MQTT 协议的中心是 broker( 服务器/代理) ,客户端通过订阅消息和发布消息进行数据交互 ,如下图所示:  2,Mosquitto安装  (1)mosquitto下载  下载地址,进入下载页面,选择source中第一个下载mosquitto-...
  • ubuntu安装mosquitto

    2021-11-27 09:10:20
    安装mosquitto sudo apt-get install mosquitto 查看mosquitto服务状态 sudo service mosquitto status ...安装mosquitto客户端 sudo apt-get install mosquitto-clients 打开一个终端,订阅主题 mosquitto_sub -h
  • 项目中基于mosquitto的使用已经做了有些时日了,工作也可能会在近期有所变动,正值这个契机,将mosquitto使用过程中的部分经验总结和输出一番。 一、mosquitto下载 可以从此路径下载mosquitto文件(包含二进制可...
  • 最近要使用C语言在路由器上开发MQTT客户端,... 在网上搜了下,Paho MQTT和mosquitto都可以作为MQTT客户端,不知道两者有什么区别?可以的话麻烦从库的大小、编译时是否依赖其他第三方库、功能的完整性等几方面比较一下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,903
精华内容 1,161
关键字:

mosquitto客户端