libmosquitto客户端和服务端代码示例
时间: 2023-08-05 21:00:28 浏览: 62
libmosquitto是一个轻量级的MQTT(Message Queuing Telemetry Transport)开源库,用于实现MQTT客户端和服务端的通信。下面是使用libmosquitto库编写的客户端和服务端代码示例。
客户端代码示例:
```c
#include <stdio.h>
#include <mosquitto.h>
void on_connect(struct mosquitto *mosq, void *obj, int rc) {
printf("Connected to broker with result: %d\n", rc);
}
void on_message(struct mosquitto *mosq, void *obj, const struct mosquitto_message *msg) {
printf("Received message: %s\n", (char *)msg->payload);
}
int main(int argc, char *argv[]) {
struct mosquitto *mosq;
int rc;
mosquitto_lib_init();
mosq = mosquitto_new(NULL, true, NULL);
if (mosq == NULL) {
printf("Unable to create MQTT client instance.\n");
return 1;
}
mosquitto_connect_callback_set(mosq, on_connect);
mosquitto_message_callback_set(mosq, on_message);
rc = mosquitto_connect(mosq, "localhost", 1883, 60);
if (rc != MOSQ_ERR_SUCCESS) {
printf("Unable to connect to broker: %s\n", mosquitto_strerror(rc));
mosquitto_destroy(mosq);
return 1;
}
mosquitto_subscribe(mosq, NULL, "topic/example", 0);
mosquitto_loop_start(mosq);
// 订阅成功后,可以继续在这里添加其他操作
mosquitto_loop_stop(mosq, true);
mosquitto_disconnect(mosq);
mosquitto_destroy(mosq);
mosquitto_lib_cleanup();
return 0;
}
```
服务端代码示例:
```c
#include <stdio.h>
#include <mosquitto.h>
void on_connect(struct mosquitto *mosq, void *obj, int rc) {
printf("Client connected with result: %d\n", rc);
}
void on_message(struct mosquitto *mosq, void *obj, const struct mosquitto_message *msg) {
printf("Received message: %s\n", (char *)msg->payload);
}
int main(int argc, char *argv[]) {
struct mosquitto *mosq;
int rc;
mosquitto_lib_init();
mosq = mosquitto_new(NULL, true, NULL);
if (mosq == NULL) {
printf("Unable to create MQTT client instance.\n");
return 1;
}
mosquitto_connect_callback_set(mosq, on_connect);
mosquitto_message_callback_set(mosq, on_message);
rc = mosquitto_bind(mosq, "localhost", 1883, 100);
if (rc != MOSQ_ERR_SUCCESS) {
printf("Unable to bind to MQTT port: %s\n", mosquitto_strerror(rc));
mosquitto_destroy(mosq);
return 1;
}
mosquitto_loop_start(mosq);
// 在这里可以添加其他操作,例如发布消息等
mosquitto_loop_stop(mosq, true);
mosquitto_destroy(mosq);
mosquitto_lib_cleanup();
return 0;
}
```
以上是使用libmosquitto库编写的简单的MQTT客户端和服务端代码示例。在实际应用中,可以根据具体需求进行更加丰富的功能扩展和优化。