本人使用的环境是wsl
直接网络中访问
\wsl$
就可以进入Ubuntu的文件目录
附上下载链接 https://github.com/eclipse/paho.mqtt.c.git
准备解压好的paho.mqtt.c-master文件夹拉进去
然后进入Ubuntu
安装cmake软件
sudo apt install cmake
安装完毕后一直cd到paho.mqtt.c的文件目录下
执行命令
cmake .
make
make install
等待即可
第二步主要生成动态链接库,然后我们使用一个C文件测试一下
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "MQTTClient.h"
#define ADDRESS "tcp://localhost:1883" //更改此处地址
#define CLIENTID "ubuntu" //更改此处客户端ID
#define TOPIC "test" //更改发送的话题
#define PAYLOAD "Hello World!" //更改信息内容
#define QOS 1
#define TIMEOUT 10000L
int main(int argc, char* argv[])
{
//声明一个MQTTClient
MQTTClient client;
char *username= "bees"; //添加的用户名
char *password = "123456"; //添加的密码
//初始化MQTT Client选项
MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer;
//#define MQTTClient_message_initializer { {'M', 'Q', 'T', 'M'}, 0, 0, NULL, 0, 0, 0, 0 }
MQTTClient_message pubmsg = MQTTClient_message_initializer;
//声明消息token
MQTTClient_deliveryToken token;
int rc;
//使用参数创建一个client,并将其赋值给之前声明的client
MQTTClient_create(&client, ADDRESS, CLIENTID,
MQTTCLIENT_PERSISTENCE_NONE, NULL);
conn_opts.keepAliveInterval = 20;
conn_opts.cleansession = 1;
conn_opts.username = username; //将用户名写入连接选项中
conn_opts.password = password;//将密码写入连接选项中
//使用MQTTClient_connect将client连接到服务器,使用指定的连接选项。成功则返回MQTTCLIENT_SUCCESS
if ((rc = MQTTClient_connect(client, &conn_opts)) != MQTTCLIENT_SUCCESS)
{
printf("Failed to connect, return code %d\n", rc);
exit(EXIT_FAILURE);
}
pubmsg.payload = PAYLOAD;
pubmsg.payloadlen = strlen(PAYLOAD);
pubmsg.qos = QOS;
pubmsg.retained = 0;
MQTTClient_publishMessage(client, TOPIC, &pubmsg, &token);
printf("Waiting for up to %d seconds for publication of %s\n"
"on topic %s for client with ClientID: %s\n",
(int)(TIMEOUT/1000), PAYLOAD, TOPIC, CLIENTID);
rc = MQTTClient_waitForCompletion(client, token, TIMEOUT);
printf("Message with delivery token %d delivered\n", token);
MQTTClient_disconnect(client, 10000);
MQTTClient_destroy(&client);
return rc;
}
使用命令链接生成编译
gcc MQTTClient_publish.c -o MQTTClient_publish -lpaho-mqtt3c -lpaho-mqtt3a
然后运行
./MQTTClient_publish
发布消息成功,说明已经成功了