MQTT客户端C++代码
时间: 2023-10-14 18:06:13 浏览: 186
当然可以!以下是一个基本的MQTT客户端C++代码示例:
```cpp
#include <iostream>
#include <mqtt/async_client.h>
const std::string SERVER_ADDRESS("tcp://mqtt.eclipse.org:1883");
const std::string CLIENT_ID("mqtt_cpp_client");
class mqtt_callback : public virtual mqtt::callback
{
void connection_lost(const std::string &cause) override
{
std::cout << "\nConnection lost: " << cause << std::endl;
}
void delivery_complete(mqtt::delivery_token_ptr token) override {}
void message_arrived(const mqtt::const_message_ptr &msg) override
{
std::cout << "Message arrived: "
<< "topic: '" << msg->get_topic() << "', "
<< "payload: '" << msg->to_string() << "'"
<< std::endl;
}
};
int main(int argc, char *argv[])
{
mqtt::async_client client(SERVER_ADDRESS, CLIENT_ID);
mqtt_callback cb;
client.set_callback(cb);
mqtt::connect_options connOpts;
connOpts.set_keep_alive_interval(20);
connOpts.set_clean_session(true);
try
{
client.connect(connOpts);
client.subscribe("#", 1);
std::this_thread::sleep_for(std::chrono::seconds(5));
client.unsubscribe("#");
client.disconnect();
}
catch (const mqtt::exception &exc)
{
std::cerr << "Error: " << exc.what() << std::endl;
return 1;
}
return 0;
}
```
这个例子使用了一个名为`mqtt::async_client`的MQTT C++库,你需要先安装该库并链接到你的项目中。在这个例子中,我们连接到了公共的MQTT代理服务器(mqtt.eclipse.org)并订阅了所有主题(`#`)。当有消息到达时,会触发`message_arrived`回调函数。
请注意,这只是一个基本的示例,你可以根据需要修改和扩展它来满足你的实际需求。
阅读全文