我现在也同时安装了mosquitto,可以与你刚刚安装的paho进行通信吗
时间: 2024-03-01 09:53:32 浏览: 56
同时打开多端口的通信程序
4星 · 用户满意度95%
是的,您可以使用mosquitto和paho-mqtt C++库进行通信。mosquitto是一个MQTT代理,它可以接收和转发MQTT消息,而paho-mqtt C++库是一个MQTT客户端库,它可以连接到MQTT代理并发布/订阅MQTT消息。
如果您已经在本地安装了mosquitto代理,并且已经成功连接到代理,那么您可以使用paho-mqtt C++库来发布/订阅MQTT消息。以下是一个简单的示例程序,它使用paho-mqtt C++库来订阅一个主题并打印收到的消息:
```
#include <iostream>
#include <mqtt/async_client.h>
class callback : public virtual mqtt::callback {
public:
void connection_lost(const std::string& cause) override {}
void delivery_complete(mqtt::delivery_token_ptr tok) override {}
void message_arrived(mqtt::const_message_ptr msg) override {
std::cout << "Received message: " << msg->to_string() << std::endl;
}
void on_failure(const mqtt::token& tok) override {}
void on_success(const mqtt::token& tok) override {}
};
int main() {
std::string server_address = "tcp://localhost:1883";
std::string client_id = "test_client";
mqtt::async_client client(server_address, client_id);
callback cb;
client.set_callback(cb);
mqtt::connect_options conn_opts;
conn_opts.set_keep_alive_interval(20);
mqtt::token_ptr conntok = client.connect(conn_opts);
conntok->wait();
mqtt::topic topic(client, "test/topic", 0);
mqtt::token_ptr subtok = topic.subscribe();
subtok->wait();
while (true) {
client.loop();
}
return 0;
}
```
这个程序订阅了名为 "test/topic" 的MQTT主题,并打印所有收到的消息。要编译链接此程序,您需要使用以下命令:
```
g++ -std=c++11 -o test test.cpp -lpaho-mqttpp3 -lpaho-mqtt3as
```
当您运行此程序时,它将连接到本地的mosquitto代理并开始订阅 "test/topic" 主题。如果您在另一个终端窗口中发布 "test/topic" 主题的消息,则该程序将打印消息内容。
阅读全文