#include <stdio.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <string.h>
#include <unistd.h>
#include <vector>
#include <mutex>
#include "MQTTAsync.h"
#define PUB_MQTT_TOPIC "service2wuxi"
#define PUB_MQTT_CLIENTID "SERVICE_PUB_MQTT"
#define QOS 0
#define KEY_MQTT_BROKER_ADDRESS "172.0.0.1"
#define KEY_MQTT_BROKER_PORT 1883
#define BUFFER_SIZE 1024
int main()
{
int ret;
char input_msg[BUFFER_SIZE];
char recv_msg[BUFFER_SIZE] = "hello this msg is send from yancheng! ";
char address[] = "tcp://localhost:1883";
//1.创建一个客户端对象
MQTTAsync pub_client;
//初始化MQTT Client选项
MQTTAsync_connectOptions conn_opts = MQTTAsync_connectOptions_initializer;
//声明消息token
//MQTTClient_deliveryToken token;
//使用参数创建一个client,并将其赋值给之前声明的client
MQTTAsync_create(&pub_client, address, PUB_MQTT_CLIENTID, MQTTCLIENT_PERSISTENCE_NONE, NULL);
//MQTTAsync pub_client_ = client;
MQTTAsync_setCallbacks(pub_client, NULL, NULL, NULL, NULL);
//2.设置连接MQTT服务器的选项
conn_opts.keepAliveInterval = 20;
conn_opts.cleansession = 1;
//conn_opts.username = USERNAME;
//conn_opts.password = PASSWORD;
conn_opts.onSuccess = NULL;
conn_opts.automaticReconnect = 1;
conn_opts.context = pub_client;
MQTTAsync_connectOptions pub_opts_ = conn_opts;
//使用MQTTClient_connect将client连接到服务器,使用指定的连接选项。成功则返回MQTTCLIENT_SUCCESS
if ((ret = MQTTAsync_connect(pub_client, &conn_opts)) != MQTTASYNC_SUCCESS)
{
printf("Failed to start connect, return code %d\n", ret);
}
//初始化MQTT MQTTClient_message选项
MQTTAsync_responseOptions opts = MQTTAsync_responseOptions_initializer;
MQTTAsync_message pubmsg = MQTTAsync_message_initializer;
opts.context = pub_client;
pubmsg.payload = recv_msg;
pubmsg.payloadlen = (int)strlen(recv_msg);
pubmsg.qos = QOS;
pubmsg.retained = 0;
if ((ret = MQTTAsync_sendMessage(pub_client, PUB_MQTT_TOPIC, &pubmsg, &opts)) != MQTTASYNC_SUCCESS)
{
printf("MQTT sendMsg failed ,errCode-->%d", ret);
}
return 0;
}
编译时报错
v2x@ubuntu:~/Desktop/yancheng/mqttClient$ g++ test123.c -o test123 -std=c++11
/tmp/ccT4gVxQ.o: In function `main':
test123.c:(.text+0xf5): undefined reference to `MQTTAsync_create'
test123.c:(.text+0x119): undefined reference to `MQTTAsync_setCallbacks'
test123.c:(.text+0x185): undefined reference to `MQTTAsync_connect'
test123.c:(.text+0x383): undefined reference to `MQTTAsync_sendMessage'
collect2: error: ld returned 1 exit status
网上有人说缺少编译的库文件。
后来我到网上下载了mqtt 的源代码,编译了一下,结果编译出的库文件是arm架构的