windows下mqtt客户端的使用

https://github.com/emqx/MQTT-Client-Examples/tree/master/mqtt-client-C-paho

下载准备:

mqtt源码:

git clone https://github.com/eclipse/paho.mqtt.c.git

openssl的安装包下载地址:Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions

cmake:未安装自行安装

编译:

源码目录下创建 build文件路径。

cmke里面进行编译

注意:如果需要用到ssl相关,在cmake时必须勾选 "PAHO_WITH_SSL" 项,否则无法生成paho-mqtt3cs、paho-mqtt3as等相关工程

双击 生成的 Eclipse Paho C.sln

编译 release 、x64、MT版本的库文件,每个项目都需要设置

最后右键 ALL_BUILD 项目,点击生成,即可生成对应的库文件。

此时可以在build文件夹下看到src文件夹下Release文件夹,里面有编译后生成的文件:paho-mqtt3a.dll、paho-mqtt3a.lib、paho-mqtt3c.dll、paho-mqtt3c.lib。

paho-mqtt3a : 一般实际开发中就是使用这个,a表示的是异步消息推送(asynchronous)。

paho-mqtt3as : as表示的是 异步+加密(asynchronous+OpenSSL)(本文步骤无法生成)。

paho-mqtt3c : c 表示的应该是同步(Synchronize),一般性能较差,是发送+等待模式。

paho-mqtt3cs : 同上,增加了一个OpenSSL而已
 

mqtt的使用

#include "stdlib.h"
#include "string.h"
#include "Windows.h"
#include "MQTTClient.h"
#include <iostream>

//配置需根据自己的情况进行设置
#define ADDRESS     "ssl:ip:port"  
#define USERNAME    "usename"
#define PASSWORD    "password
#define CLIENTID    "clientid"
#define QOS         0
#define TOPIC       "topic"
#define TIMEOUT     10000L
#define CLIENTCERT  "C:\\.......\\client.crt"
#define PRIVATEKEY  "C:\\.......\\client.key"

/*
    用于处理接收到的消息的回调函数:这个回调函数在接收到消息时被调用。
    它从消息结构体中获取消息内容,并打印出来。然后使用MQTTClient_freeMessage
    和MQTTClient_free函数释放相关资源。
*/
int on_message(void* context, char* topicName, int topicLen, MQTTClient_message* message) 
{
    char* payload = static_cast<char*>(message->payload);
    printf("Received `%s` from `%s` topic \n", payload, topicName);
    MQTTClient_freeMessage(&message);
    MQTTClient_free(topicName);
    return 1;
}

int main(int argc, char* argv[]) 
{
    int rc;
    MQTTClient client;
        
    MQTTClient_createOptions createOpts = MQTTClient_createOptions_initializer;
    int res_mqttclient_create = MQTTClient_create(&client, ADDRESS, CLIENTID, 0, NULL);
    std::cout << "res_mqttclient_create = " << res_mqttclient_create << std::endl;
    MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer;    
    conn_opts.username = USERNAME;
    conn_opts.password = PASSWORD;

    MQTTClient_SSLOptions ssl_opts = MQTTClient_SSLOptions_initializer;
    
    ssl_opts.verify = 0;
    ssl_opts.privateKey = PRIVATEKEY;
    ssl_opts.keyStore = CLIENTCERT;
    ssl_opts.enableServerCertAuth = 0;
    conn_opts.ssl = &ssl_opts;
    
    int res_mqttclient_setcallbacks = MQTTClient_setCallbacks(client, NULL, NULL, on_message, NULL);//使用MQTTClient_setCallbacks函数设置回调函数,
                                                                                                    //包括接收消息的回调函数on_message。
    std::cout << "res_mqttclient_setcallbacks = " << res_mqttclient_setcallbacks << std::endl;
    if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS) 
    {
        printf("Failed to connect, return code %d\n", rc);
        exit(-1);
    }
    else 
    {
        printf("Connected to MQTT Broker!\n");
    }
    // subscribe topic
    MQTTClient_subscribe(client, TOPIC, QOS);//订阅指定的主题,使用MQTTClient_subscribe函数进行订阅。
    // 暂停程序,等待接收消息
    getchar();
    MQTTClient_disconnect(client, TIMEOUT);
    MQTTClient_destroy(&client);
    return rc;
}

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: MQTT客户端 for Window是一种在Windows操作系统上运行的MQTT协议的客户端软件。MQTT(Message Queuing Telemetry Transport)是一种轻量级的、开放的、基于发布/订阅的消息传输协议,常用于物联网(IoT)应用中。 MQTT客户端 for Window可以通过与MQTT代理服务器进行通信,实现设备之间的数据传输和通信。它具有以下特点: 1. 轻量级:MQTT协议非常轻量级,可以在带宽较低和计算能力有限的设备上运行,而不会造成过多的资源占用。 2. 简单易用:MQTT客户端 for Window提供了友好的用户界面,使用户可以方便地创建、配置和管理MQTT连接和订阅。 3. 灵活的发布/订阅模式:MQTT客户端 for Window基于发布/订阅模式,使得设备可以订阅感兴趣的主题(Topic),并接收来自其他设备或服务器的相应消息。 4. 可扩展性:MQTT客户端 for Window支持多种设备和平台,可以与各种硬件设备和操作系统兼容,具有很好的可扩展性。 5. 安全性:MQTT客户端 for Window支持MQTT协议的加密和数据传输的安全性,可以通过SSL/TLS协议进行安全通信。 总之,MQTT客户端 for Window是一种在Windows操作系统上运行的MQTT协议的客户端软件,它可以帮助用户轻松实现设备之间的通信和数据传输,非常适用于物联网应用场景。 ### 回答2: MQTT客户端是一种用于连接到MQTT代理服务器的应用程序,可以在Windows操作系统上运行。它允许用户通过MQTT协议与其他设备或应用程序进行实时的、双向的通信。 MQTT客户端可用于多种不同的应用场景,比如物联网(IoT)、传感器网络、远程监控等。它可以与各种设备进行通信,包括传感器、智能家居设备、工业控制器等。 在Windows使用MQTT客户端,用户可以配置代理服务器的连接参数,如IP地址、端口号、订阅主题等。一旦与代理服务器建立连接,MQTT客户端可以发布(publish)和订阅(subscribe)消息。发布消息表示客户端向代理服务器发送消息,而订阅消息表示客户端接收代理服务器发布的消息。 MQTT客户端可以通过不同的方式实现,例如使用各种编程语言编写的自定义应用程序,或者使用现有的MQTT客户端软件,如MQTT.fx、mosquitto_pub等。这些软件通常提供了直观的用户界面,方便用户进行操作和监控。 总之,MQTT客户端Windows操作系统上的使用非常灵活和方便,可以帮助用户轻松地构建与其他设备和应用程序之间的实时通信连接。它是物联网和传感器网络等领域中不可或缺的组件,为用户提供了许多有用的功能和服务。 ### 回答3: MQTT客户端是一种用于与MQTT(Message Queuing Telemetry Transport)代理服务器通信的应用程序。在Windows操作系统上,有许多不同的MQTT客户端可供选择,以满足不同用户的需求。 首先,Eclipse Paho是一个非常受欢迎的MQTT客户端,具有跨平台的特性,包括适用于Windows的版本。它提供了丰富的功能,使开发人员能够轻松地与MQTT代理服务器进行通信,包括发布和订阅消息、设置QoS(Quality of Service)级别、处理断开连接、处理消息保留等。 其次,HiveMQ是另一个流行的MQTT客户端,也提供了适用于Windows的版本。HiveMQ具有高度可扩展性和可靠性,并提供诸如消息路由、消息处理、会话管理等高级功能。它还支持一些高级协议和功能,如MQTT 5.0、请求/响应模式等。 此外,有一些其他适用于WindowsMQTT客户端,如MQTT.fx、MQTT Explorer等,它们提供了直观的图形用户界面,用于连接和交互。这些客户端通常支持易于配置的用户界面、消息发布/订阅、主题过滤等基本功能,以及一些高级功能,如SSL/TLS安全连接、多个代理服务器支持等。 无论选择哪个MQTT客户端,用户都可以根据自己的需求和偏好来决定。这些客户端都提供了易于使用的界面和强大的功能,使得使用MQTT协议进行通信变得更加方便和灵活。无论是开发人员还是普通用户,都可以通过这些客户端享受到MQTT技术所带来的便利和强大能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值