当前位置: 首页 > news >正文

那些网站可以做文案兼职做网站具备的条件

那些网站可以做文案兼职,做网站具备的条件,wordpress怎么重新配置文件,上海建设厅网站首页C Paho实现MQTT消息发布功能 要使用paho的cpp接口实现发布MQTT消息的功能#xff0c;需要进行以下步骤#xff1a; 安装paho库#xff1a;首先从paho官方网站下载并安装paho的C库。可以从https://www.eclipse.org/paho/clients/cpp/ 下载适合操作系统的版本。 创建MQTT客户…C Paho实现MQTT消息发布功能 要使用paho的cpp接口实现发布MQTT消息的功能需要进行以下步骤 安装paho库首先从paho官方网站下载并安装paho的C库。可以从https://www.eclipse.org/paho/clients/cpp/ 下载适合操作系统的版本。 创建MQTT客户端可以使用mqtt::client类来创建一个客户端如下所示 mqtt::client client(tcp://broker.example.com:1883, clientId);在上面的代码中broker.example.com是您的MQTT代理服务器的地址1883是MQTT代理服务器的默认端口。clientId是客户端的唯一标识符可以自己选择一个适合的名字。 设置连接选项创建客户端后可以设置一些连接选项例如设置用户名和密码设置遗嘱消息等。以下是示例代码 mqtt::connect_options connOpts; connOpts.set_user_name(username); connOpts.set_password(password); connOpts.set_will(mqtt::message(topic, offline, 1, true));在上面的代码中username和password是您的MQTT代理服务器的登录凭据。topic是遗嘱消息的主题offline是遗嘱消息的内容1是遗嘱消息的QoS级别Quality of Servicetrue表示遗嘱消息是保留的。 连接到MQTT代理服务器使用mqtt::client对象的connect方法连接到MQTT代理服务器如下所示 client.connect(connOpts);发布消息使用mqtt::client对象的publish方法发布消息。以下是一个示例代码 std::string payload Hello, MQTT!; client.publish(topic, payload.c_str(), payload.length());在上面的代码中topic是消息的主题payload是消息的内容。您可以根据需要修改这些值。 断开连接在完成消息发布后您可以使用mqtt::client对象的disconnect方法断开与MQTT代理服务器的连接如下所示 client.disconnect();这是使用paho的cpp接口发布MQTT消息的基本步骤实际应用中可能需要处理更多的错误和异常情况。参考paho的官方文档和示例代码来进一步了解和掌握paho的cpp接口的使用。 完整的C Paho消息发布的代码演示 #include iostream #include cstring #include mqtt/async_client.hconst std::string SERVER_ADDRESS(tcp://broker.example.com:1883); const std::string CLIENT_ID(clientId); const std::string TOPIC(topic);class mqtt_callback : public virtual mqtt::callback {void connection_lost(const std::string cause) override{std::cout \nConnection lost! Cause: cause std::endl;}void delivery_complete(mqtt::delivery_token_ptr token) override{std::cout Message delivery complete! std::endl;} };int main(int argc, char* argv[]) {try{mqtt::async_client client(SERVER_ADDRESS, CLIENT_ID);mqtt::connect_options conn_opts;mqtt_callback cb;client.set_callback(cb);client.connect(conn_opts);std::string payload Hello, MQTT!;mqtt::message_ptr pubmsg mqtt::make_message(TOPIC, payload);client.publish(pubmsg);client.disconnect();}catch (const mqtt::exception exc){std::cerr Error: exc.what() std::endl;return 1;}return 0; }在这段代码中我们包含了必要的头文件并定义了MQTT服务器地址、客户端ID和主题。我们还定义了一个自定义的回调类mqtt_callback它继承自mqtt::callback用于处理连接丢失和消息传递完成事件。 在main()函数内部创建了一个带有服务器地址和客户端ID的mqtt::async_client对象。我们还创建了一个mqtt::connect_options对象来指定连接选项。使用client.set_callback(cb)为客户端设置回调函数其中cb是mqtt_callback类的一个实例。 我们使用client.connect(conn_opts)建立与MQTT服务器的连接。如果连接成功我们使用mqtt::make_message()创建一个带有所需负载和主题的MQTT消息。 最后使用client.publish(pubmsg)发布消息并使用client.disconnect()断开与MQTT服务器的连接。 客户端C Paho实现 MQTT的客户端 同步客户端mqtt::client 在paho库中mqtt::client和mqtt::async_client是MQTT客户端的两种不同实现方式。 mqtt::client是同步的客户端实现它在发送和接收消息时会阻塞当前线程直到操作完成或发生超时。这意味着您需要手动管理线程和处理并发操作。使用mqtt::client可以更容易地编写简单的同步代码特别适用于简单的MQTT应用程序或在没有并发需求的情况下。 以下是使用mqtt::client的示例代码 mqtt::client client(tcp://broker.example.com:1883, clientId);// Connect to the MQTT broker client.connect();// Publish a message client.publish(topic, Hello, MQTT!);// Subscribe to a topic client.subscribe(topic);// Wait for incoming messages mqtt::message_ptr msg client.consume_message();// Disconnect from the MQTT broker client.disconnect();异步客户端mqtt::async_client 另一方面mqtt::async_client是异步的客户端实现它使用了异步操作和回调函数来处理发送和接收消息不会阻塞当前线程。这意味着您可以在一个线程中同时处理多个操作包括异步地发送和接收消息。使用mqtt::async_client可以更好地处理并发操作和复杂的MQTT应用程序。 以下是使用mqtt::async_client的示例代码 mqtt::async_client client(tcp://broker.example.com:1883, clientId);// Connect to the MQTT broker mqtt::token_ptr conntok client.connect(); conntok-wait();// Publish a message mqtt::token_ptr pubtok client.publish(topic, Hello, MQTT!); pubtok-wait();// Subscribe to a topic mqtt::token_ptr subtok client.subscribe(topic); subtok-wait();// Wait for incoming messages client.start_consuming();// Disconnect from the MQTT broker mqtt::token_ptr disctok client.disconnect(); disctok-wait();虽然mqtt::async_client提供了更强大的功能和更好的并发性能但它需要更多的代码和处理异步回调函数。如果应用程序需要处理大量的并发操作或实现复杂的MQTT逻辑推荐使用mqtt::async_client。但如果只需要简单的同步操作或在单线程环境中运行较简单的MQTT应用程序那么使用mqtt::client可能更合适。应该根据您的具体需求和应用程序的复杂性选择适合的客户端实现方式。 使用C Paho连接rabbitmq 下面是一个简单的示例代码演示了如何使用Paho C库连接到RabbitMQ并发布和订阅消息 #include iostream #include cstring #include cstdlib #include unistd.h #include mqtt/async_client.hconst std::string SERVER_ADDRESS(tcp://localhost:1883); const std::string CLIENT_ID(paho_cpp_async); const std::string TOPIC(test_topic);class callback : public virtual mqtt::callback, public virtual mqtt::iaction_listener { private:mqtt::async_client client_;public:callback(mqtt::async_client client) : client_(client) {}void connection_lost(const std::string cause) override {std::cout \nConnection lost std::endl;if (!cause.empty())std::cout \tcause: 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: msg-get_payload_str() std::endl;}void on_failure(const mqtt::token tok) override {std::cout Connection attempt failed std::endl;}void on_success(const mqtt::token tok) override {std::cout Connection attempt successful std::endl;// 发布消息mqtt::message_ptr pubmsg mqtt::make_message(TOPIC, Hello from Paho C);pubmsg-set_qos(1);client_.publish(pubmsg);} };int main(int argc, char* argv[]) {mqtt::async_client client(SERVER_ADDRESS, CLIENT_ID);callback cb(client);client.set_callback(cb);mqtt::connect_options connOpts;connOpts.set_clean_session(true);try {std::cout Connecting to the MQTT server... std::endl;mqtt::token_ptr conntok client.connect(connOpts);conntok-wait();std::cout Connected! std::endl;// 订阅消息client.subscribe(TOPIC, 1);while (true) {// 持续监听消息usleep(1000000);}} catch (const mqtt::exception exc) {std::cerr Error: exc.what() std::endl;return 1;}return 0; }这个示例代码创建了一个异步的MQTT客户端并连接到RabbitMQ服务器。它使用一个回调类来处理与连接、消息到达等事件相关的回调。在on_success回调中它发布一条消息。在message_arrived回调中它处理接收到的消息。 编译和运行代码使用适当的编译器和选项将代码编译为可执行文件。确保已经安装了Paho C库并在编译时链接到该库。然后运行可执行文件。 这样就可以使用Paho C库连接到RabbitMQ并进行消息发布和订阅操作了。 本示例代码仅提供了一个基本的框架需要根据自己的需求进行更多的自定义和错误处理。此外确保已正确配置RabbitMQ服务器的连接参数如服务器地址、端口和认证信息等。 补充说明 连续发送消息的注意事项 在连续发送多条消息时避免频繁断开和重连MQTT客户端。频繁的断开和重连会增加网络开销和延迟并且可能会对MQTT服务器造成不必要的负担。保持MQTT客户端的持久连接并在需要时使用同一连接发送多条消息。 以下示例展示如何保持MQTT客户端的持久连接并连续发送多条消息 mqtt::async_client client(tcp://broker.example.com:1883, clientId);// Connect to the MQTT broker mqtt::connect_options connOpts; connOpts.set_keep_alive_interval(60); // 设置心跳间隔为60秒 connOpts.set_clean_session(false); // 设置为非清理会话模式 mqtt::token_ptr conntok client.connect(connOpts); conntok-wait();// Publish multiple messages for (int i 0; i 10; i) {std::string topic topic;std::string payload Message std::to_string(i);mqtt::message_ptr pubmsg mqtt::make_message(topic, payload);mqtt::token_ptr pubtok client.publish(pubmsg);pubtok-wait(); }// Disconnect from the MQTT broker mqtt::token_ptr disctok client.disconnect(); disctok-wait();在上述示例中使用set_keep_alive_interval()方法设置了心跳间隔为60秒这样可以确保MQTT客户端与服务器保持持久连接。我们还使用set_clean_session(false)将客户端设置为非清理会话模式这样即使客户端断开连接会话状态也会保留。 然后我们使用一个循环来连续发布多条消息。每次循环中我们创建一个新的消息并使用client.publish()发送。通过保持持久连接我们可以在同一连接上连续发送多条消息而不需要频繁断开和重连。 最后使用client.disconnect()来断开与MQTT服务器的连接。 具体的MQTT应用程序可能会有不同的需求和限制。如果应用程序需要在发送消息之间有较长的时间间隔或者需要处理长时间的非活动状态那么可以考虑在一段时间后断开连接并在需要时重新连接。为了连续发送多条消息建议保持MQTT客户端的持久连接避免频繁断开和重连。这样可以减少网络开销并提高性能。 如果无需同步是否需要wait 如果不需要等待异步操作完成那么在使用mqtt::token对象的时候可以选择不调用wait方法。wait方法会阻塞当前线程直到操作完成或发生超时。如果您不调用wait方法程序将继续执行下一行代码而不会等待操作完成。 以下是一个不调用wait方法的情况 mqtt::async_client client(tcp://broker.example.com:1883, clientId);// Connect to the MQTT broker mqtt::token_ptr conntok client.connect(); // 不调用wait方法程序继续执行下一行代码// Publish a message mqtt::token_ptr pubtok client.publish(topic, Hello, MQTT!); // 不调用wait方法程序继续执行下一行代码// Subscribe to a topic mqtt::token_ptr subtok client.subscribe(topic); // 不调用wait方法程序继续执行下一行代码// Wait for incoming messages client.start_consuming();// Disconnect from the MQTT broker mqtt::token_ptr disctok client.disconnect(); // 不调用wait方法程序继续执行下一行代码上述示例创建了一个mqtt::async_client对象并进行了连接、发布消息、订阅主题和断开连接的操作。但是我们没有调用wait方法等待操作完成。这意味着程序将继续执行下一行代码而不会等待操作完成。 请注意如果不调用wait方法将无法确定操作是否成功完成。如果需要获取操作的结果或处理操作的回调函数可能需要调用wait_for_completion方法或使用其他适当的方式来处理异步操作的结果。
http://www.dnsts.com.cn/news/69546.html

相关文章:

  • 扬州市城乡建设网站营销网络分布图
  • 长春网站建设phpjz青海建设厅网站证件查询
  • 网站建设的功能模块企业网站mp4怎么处理
  • 银行虚拟网站制作网站做跳转链接的好处
  • 建网站做外贸wordpress路由规则
  • 惠安建设局网站潍坊小企业网站建设
  • 顺德网站建设公司价格想开一个外企的网站怎么超做
  • 免费的视频模板网站室内装修工人培训班
  • 广告文案策划长春网络推广seo
  • 高新公司网站建设哪家好东莞seo收费
  • 网站设计培训学校如何做家教网
  • 网站轮播图怎么设计网页表格设计模板
  • 网站运营托管方案湖南岳阳网站建设公司黄页顺企网
  • 学校网站建设考评办法网站改版业务
  • 广东省建设教育协会是什么网站百度分享wordpress
  • 网页加入信任站点广告设计制作工作室
  • 国外包装设计网站关键词林俊杰mp3免费下载
  • 网站的主机空间是朋友做的网站图片不显示不出来
  • 青岛建设房地产招聘信息网站专业微网站建设公司首选
  • 建设通网站查网站搭建框架是什么
  • 徐汇区网站建设公司二次开发
  • 制作网站不给源代码网站企业备案需要哪些
  • 网站建设基本话术php 如何用op浏览器开发手机网站
  • 网站模板建设有什么教做维c甜品的网站
  • 个人网站设计企业wordpress怎么用万网域名
  • 网站服务器错误wordpress category id
  • 西安网站建设 app深圳设计展
  • 外贸网站建设 googlevs做的网站如何使用
  • asp网站空间seo成功案例分析
  • 深圳网站建设设计公司怎么推广一个网站