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

枣庄做网站优化关键词有哪几种

枣庄做网站优化,关键词有哪几种,做网站植入广告赚钱,商业招商网站目录 服务通信模型服务通信的C实现服务端客户端 关键函数说明 服务通信模型 服务通信模型如上图所示,分为服务端和客户端,客户端根据需要向服务端发送请求(Request),服务端处理请求,并向客户端发回响应&…

目录

  • 服务通信模型
  • 服务通信的C++实现
    • 服务端
    • 客户端
  • 关键函数说明

服务通信模型

在这里插入图片描述
 服务通信模型如上图所示,分为服务端和客户端,客户端根据需要向服务端发送请求(Request),服务端处理请求,并向客户端发回响应(Response)。一个服务端对应有多个客户端,并且消息的流向是双向的。

服务通信的C++实现

服务端

 首先明确服务端的工作流程:服务端创建后被挂起,直到收到客户端请求后执行对应的任务,并返回响应结果

  1. 依赖
#include "rclcpp/rclcpp.hpp" //标准库
#include "自定义接口文件/srv/xxx.hpp" //消息接口库
using 自定义接口文件::srv::xxx; //命名空间
  1. 实现流程
1、节点类中声明服务端对象指针。
2、节点构造函数中创建服务端对象,并绑定回调函数。
3、 在回调函数中处理请求数据,并返回响应。
  1. 代码模板
#include "rclcpp/rclcpp.hpp"
#include "自定义节点包/srv/自定义消息.hpp"
using 自定义节点包::srv::自定义消息;
using namespace std::placeholders;class My_Service : public rclcpp::Node{
private:rclcpp::Service<消息类型>::SharedPtr service_; //1、节点类中声明服务端对象指针。void srv_callback(const 自定义消息::Request::SharedPtr req,const 自定义消息::Response::SharedPtr res)//3、在回调函数中处理请求数据,并返回响应。{ req->xxx; //请求数据解析res->xxx= XXX; //响应数据发送}
public:My_Service():Node("test_service_node"){service_ = this->create_service<消息类型>("服务名",std::bind(&My_Service::srv_callback,this,_1,_2));//2、节点构造函数中创建服务端对象,并绑定回调函数。}};int main(int argc,char* argv[]){rclcpp::init(argc,argv);rclcpp::spin(std::make_shared<消息类型>()); //循环执行服务rclcpp::shutdown();return 0;
}

客户端

 客户端的工作流程:客户端创建后择机发送请求数据,然后等待客户端返回响应信息。

  1. 依赖
#include "rclcpp/rclcpp.hpp" //标准库
#include "自定义接口文件/srv/xxx.hpp" //消息接口库
using 自定义接口文件::srv::xxx; //命名空间
  1. 实现流程
1、节点类中声明客户端对象指针。
2、节点构造函数中创建客户端对象。
3、 在调用客户端对象的发送方法,发送请求。
4、 阻塞等待返回结果,并解析Response数据
  1. 代码模板
#include "rclcpp/rclcpp.hpp"
#include "based_interfaces/srv/myservice.hpp" //自定义接口文件
using based_interfaces::srv::Myservice; //使用自定义消息的数据类型using namespace std::chrono_literals;class My_Client : public rclcpp::Node{
private:rclcpp::Client<Myservice>::SharedPtr client_; //1、节点类中声明客户端对象指针。public:My_Client():Node("test_client_node"){client_ = this->create_client<Myservice>("my_srv",10); //2、节点构造函数中创建客户端对象。}//等待连接到服务端bool connect_srv(void){while(!client_->wait_for_service(1s)){if(!rclcpp::ok()){RCLCPP_INFO(rclcpp::get_logger("rclcpp"),"程序结束!");return false;}RCLCPP_INFO(this->get_logger(),"等待连接中");}RCLCPP_INFO(this->get_logger(),"连接成功");return true;}
//3、 在调用客户端对象的发送方法,发送请求。rclcpp::Client<Myservice>::FutureAndRequestId send_data(std::string message){auto request = std::make_shared<Myservice::Request>();request->request_msg = message;return client_->async_send_request(request);}};int main(int argc,char* argv[]){rclcpp::init(argc,argv);auto myclient = std::make_shared<My_Client>();if(myclient->connect_srv()){RCLCPP_INFO(rclcpp::get_logger("rclcpp"),"连接成功");// 4、 阻塞等待返回结果,并解析Response数据auto response = myclient->send_data(argv[1]);if(rclcpp::spin_until_future_complete(myclient,response)==rclcpp::FutureReturnCode::SUCCESS){RCLCPP_INFO(rclcpp::get_logger("rclcpp"),"请求成功!");RCLCPP_INFO(rclcpp::get_logger("rclcpp"),"返回:%s!",response.get()->respone_msg.c_str());}elseRCLCPP_INFO(rclcpp::get_logger("rclcpp"),"请求异常!");}elseRCLCPP_INFO(rclcpp::get_logger("rclcpp"),"连接失败!");rclcpp::shutdown();return 0;
}

关键函数说明

  1. 定义客户端与服务端对象
rclcpp::Service<消息类型>::SharedPtr service_;
rclcpp::Client<消息类型>::SharedPtr client_;
  1. 服务端与客户端对象创建
==回调函数传入两个参数(请求与响应的指针):const 自定义消息::Request::SharedPtr req,const 自定义消息::Response::SharedPtr res,顺序不可以搞错!==
service_ = this->create_service<消息类型>("服务名",std::bind(&My_Service::srv_callback,this,_1,_2));
//
client_ = this->create_client<消息类型>("服务名",10);
  1. 服务端等待连接函数
    client->wait_for_service(xxs);相当于xx秒的阻塞延时,如果在这段时间内如果连接上服务就返回true,否则返回false。
  2. 服务端发送数据函数
    auto response = client_->async_send_request(request);,其中response的类型为: rclcpp::Client<消息类型>::FutureAndRequestId。
    response.get()->xxx获取响应数据内容。
  3. 客户端等待响应数据
    rclcpp::spin_until_future_complete(node_name,response),这里的response是async_send_request函数的返回值。
    函数返回值类型为rclcpp::FutureReturnCode,其下有SUCCESS, INTERRUPTED, TIMEOUT三种类型,分别代表不同的服务返回状态。
    在这里插入图片描述
http://www.dtcms.com/wzjs/426368.html

相关文章:

  • 商城网站建设咨询万网是什么网站
  • 魔法网站小程序开发和业务多一样的平台
  • 小程序怎么制作自己的小程序优化大师官方下载
  • 免费网站建设排行榜流量平台有哪些
  • 网站建设结构总结推广费用一般多少
  • 网站开发培训教程seo知识是什么意思
  • 网站添加百度地图导航百度大数据查询平台
  • 做网站要在vs安装什么googleplay官网
  • 注册网站需要真实姓名吗收录优美图片
  • 广西建设学院官方网站推广软文是什么意思
  • 五站合一自建网站互联网广告销售是做什么的
  • 上海做ui网站最好的公司网络营销一个月能挣多少钱
  • 人力资源公司怎么开seo优化就业前景
  • 做网站 租服务器一个完整的营销策划方案范文
  • 做网站需要多少人百度云服务器官网
  • 做网站要学的东西优秀营销软文范例300字
  • wordpress建局域网南平网站seo
  • 推广运营公司网站百度推广管理系统
  • 做转发赚钱的网站想做百度推广找谁
  • 嘉兴南湖区优秀营销型网站建设seo诊断方案
  • 建个大型网站需seo综合查询工具可以查看哪些数据
  • python和php网站开发深圳网络营销推广
  • 珠海市城乡规划建设局网站怎么给产品做网络推广
  • 做网站编辑需要看什么书开鲁seo网站
  • 怎么做云购网站免费crm
  • 网站如何添加qq客服广告公司网上接单平台
  • 如何做网站推广及优化百度入驻商家
  • 建设好网站怎么付费推广优化公司网站排名
  • 做网站的好项目web免费网站
  • 网站建设好之后都有哪些推广方法课程培训