网页 网站 区别,网站公司技术交接,网站顶部导航文件代码在吗,用asp制作一个简单的网站1 说明 采用 mosquitto 库#xff0c;实现订阅主题#xff0c;并接收消息。其中服务器有做限制#xff0c;需要对应的 cilent id #xff0c;cafile 、certfile 、keyfile 等配置2 环境
采用ubuntu 直接编译调试 安装mosquitto 库
sudo apt install libmosquitto-dev
su…1 说明 采用 mosquitto 库实现订阅主题并接收消息。其中服务器有做限制需要对应的 cilent id cafile 、certfile 、keyfile 等配置2 环境
采用ubuntu 直接编译调试 安装mosquitto 库
sudo apt install libmosquitto-dev
sudo apt-get install mosquitto3 代码实现
#include stdio.h
#include stdlib.h
#include string.h
#include mosquitto.h#define MQTT_HOST akhrsh85xmt1q-ats.iot.us-east-1.amazonaws.com
#define MQTT_PORT 8883
#define MQTT_TOPIC test_topic/recv
#define MQTT_CERT_PATH /home/sky/develop/test/mosqito/cert.pem
#define MQTT_KEY_PATH /home/sky/develop/test/mosqito/key.pem
#define MQTT_CA_PATH /home/sky/develop/test/mosqito/ca.pem
#define MQTT_CLIENT_ID ID_666void on_message(struct mosquitto *mosq, void *userdata, const struct mosquitto_message *message) {printf(Received message: %s\n, (char *)message-payload);
}int main() {struct mosquitto *mosq NULL;int rc;// 初始化 mosquitto 库mosquitto_lib_init();// 创建 mosquitto 客户端实例mosq mosquitto_new(MQTT_CLIENT_ID, true, NULL);if (!mosq) {printf(Failed to create mosquitto instance.\n);return 1;}// 设置 TLS 证书rc mosquitto_tls_set(mosq, MQTT_CA_PATH, NULL, MQTT_CERT_PATH, MQTT_KEY_PATH, NULL);if (rc ! MOSQ_ERR_SUCCESS) {printf(Failed to set TLS certificate.\n);return 1;}// 连接 MQTT 服务器rc mosquitto_connect(mosq, MQTT_HOST, 8883, 60);if (rc ! MOSQ_ERR_SUCCESS) {printf(Failed to connect to MQTT server.\n);return 1;}// 订阅主题rc mosquitto_subscribe(mosq, NULL, MQTT_TOPIC, 0);if (rc ! MOSQ_ERR_SUCCESS) {printf(Failed to subscribe to topic.\n);return 1;}// 设置消息回调函数mosquitto_message_callback_set(mosq, on_message);// 循环处理消息while (1) {rc mosquitto_loop(mosq, -1, 1);if (rc ! MOSQ_ERR_SUCCESS) {printf(Failed to process messages.\n);break;}}// 断开连接并清理资源mosquitto_disconnect(mosq);mosquitto_destroy(mosq);mosquitto_lib_cleanup();return 0;
}
对应的makefile
all: mqtt_submqtt_sub: mqtt_sub.ogcc -o mqtt_sub mqtt_sub.o -lmosquittomqtt_sub.o: mqtt_sub.cgcc -c mqtt_sub.cclean:rm -f mqtt_sub mqtt_sub.o4 调试
4.1 编译
skyubuntu:~/develop/test/mosqito$ make
gcc -c mqtt_sub.c
gcc -o mqtt_sub mqtt_sub.o -lmosquitto4.2 对应发送端的发送
此工具为 亚马逊的测试平台可根据自己的实际情况采用其他的测试工具或者linux下的发送命令
4.3 接收端
skyubuntu:~/develop/test/mosqito$
skyubuntu:~/develop/test/mosqito$ ./mqtt_sub
Received message: {message: 1111
}