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

旅游景点网站设计论文移动互联网开发专业介绍

旅游景点网站设计论文,移动互联网开发专业介绍,关键字搜索引擎,如何在线上销售自己的产品这篇文章主要为大家详细介绍了C如何利用TCP技术,实现本地ROS1和ROS2的通讯,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下 概要服务端代码 头文件源代码客户端代码 概要 利用TCP技术#xff0c;实现本地ROS1和ROS2的通讯。 服务端代码 头文件 #include 如何利用TCP技术,实现本地ROS1和ROS2的通讯,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下 概要服务端代码 头文件源代码客户端代码 概要 利用TCP技术实现本地ROS1和ROS2的通讯。 服务端代码 头文件 #include ros/ros.h #include std_msgs/String.h #include std_msgs/Bool.h #include iostream #include cstring #include unistd.h #include arpa/inet.h #include sys/socket.h #include geometry_msgs/Twist.husing namespace std;class TCPPublisher {public:TCPPublisher();~TCPPublisher();void cmdVelCallback(const geometry_msgs::Twist::ConstPtr msg);private:ros::NodeHandle n, nPrivate;ros::Publisher tcpPub;ros::Subscriber cmdVelSub;// 创建服务器套接字int serverSocket;// 设置服务器地址结构sockaddr_in serverAddr;int clientSocket;std::string topicStatus; };源代码 #include ./tcp_pub/tcp_pub.hTCPPublisher::TCPPublisher():nPrivate(~) {nPrivate.param(topicStatus, topicStatus, std::string(/cmd_vel));/*订阅话题*/cmdVelSub n.subscribe(topicStatus.c_str(), 10, TCPPublisher::cmdVelCallback, this);serverSocket socket(AF_INET, SOCK_STREAM, 0);// 设置服务器地址结构sockaddr_in serverAddr;serverAddr.sin_family AF_INET;serverAddr.sin_addr.s_addr INADDR_ANY;serverAddr.sin_port htons(8080); // 服务器监听的端口号// 绑定套接字if (bind(serverSocket, (struct sockaddr*)serverAddr, sizeof(serverAddr)) -1) {std::cerr Bind failed. std::endl;close(serverSocket);return;}// 监听连接if (listen(serverSocket, SOMAXCONN) -1) {std::cerr Listen failed. std::endl;close(serverSocket);return;}std::cout Server is listening for incoming connections... std::endl;ROS_INFO(TCPPublisher init successfully!!!); }TCPPublisher::~TCPPublisher() {close(serverSocket); }void TCPPublisher::cmdVelCallback(const geometry_msgs::Twist::ConstPtr msg) {float velX msg-linear.x;float angularZ msg-angular.z;// ROS_INFO(velX : %f, angularZ : %f, velX, angularZ);// 定义字符数组用于存储转换后的结果char buffer[50]; // 适当调整数组大小以适应你的需求snprintf(buffer, sizeof(buffer), %f,%f, velX, angularZ);// ROS_INFO(buffer %s, buffer);// 接受连接int clientSocket accept(serverSocket, NULL, NULL);if (clientSocket -1) {std::cerr Accept failed. std::endl;close(serverSocket);return;}std::cout Connection established with a client. std::endl;// 发送消息给客户端const char* message buffer;ROS_INFO(message %s, message);if (send(clientSocket, message, strlen(message), 0) -1) {std::cerr Error sending message. std::endl;}// 关闭客户端套接字close(clientSocket); }int main(int argc, char **argv) {//创建节点ros::init(argc, argv, pure_pursuit);TCPPublisher tp; ros::spin();return 0; }客户端代码 #include rclcpp/rclcpp.hpp #include geometry_msgs/msg/twist.hpp #include iostream #include cstring #include unistd.h #include arpa/inet.h #include sys/socket.hint main(int argc, char * argv[]) {rclcpp::init(argc, argv);auto node std::make_sharedrclcpp::Node(tcp_client);/*define publisher*/rclcpp::Publishergeometry_msgs::msg::Twist::SharedPtr cmd_pub_;// Advertise velocity commandsauto default_qos rclcpp::QoS(rclcpp::SystemDefaultsQoS());cmd_pub_ node-create_publishergeometry_msgs::msg::Twist(cmd_vel, default_qos);//连接到服务器// if (connect(clientSocket, (struct sockaddr*)serverAddr, sizeof(serverAddr)) -1) {// std::cerr Connection failed. std::endl;// close(clientSocket);// return 1;// }// std::cout Connected to the server. std::endl;while (true) {// 创建客户端套接字int clientSocket socket(AF_INET, SOCK_STREAM, 0);if (clientSocket -1) {std::cerr Failed to create client socket. std::endl;return 1;}// 设置服务器地址结构sockaddr_in serverAddr;serverAddr.sin_family AF_INET;serverAddr.sin_addr.s_addr htonl(INADDR_LOOPBACK); // 本地回环地址 // 服务器的 IP 地址serverAddr.sin_port htons(8080); // 服务器监听的端口号// 连接到服务器if (connect(clientSocket, (struct sockaddr*)serverAddr, sizeof(serverAddr)) -1) {std::cerr Connection failed. std::endl;close(clientSocket);// return 1;}// std::cout Connected to the server. std::endl;// 接收消息char buffer[50];memset(buffer, 0, sizeof(buffer));if (recv(clientSocket, buffer, sizeof(buffer), 0) -1) {std::cerr Error receiving message. std::endl;} else {std::cout Received message from server: buffer std::endl;// 定义两个变量来存储解析后的浮点数float floatValue1, floatValue2;// 使用 sscanf 解析字符数组if (std::sscanf(buffer, %f,%f, floatValue1, floatValue2) 2) {// 打印解析结果std::cout 解析后的浮点数1: floatValue1 std::endl;std::cout 解析后的浮点数2: floatValue2 std::endl;} else {// 解析失败std::cerr 解析失败 std::endl;}geometry_msgs::msg::Twist cmd_msg;cmd_msg.linear.x floatValue1;cmd_msg.angular.z floatValue2;cmd_pub_-publish(cmd_msg);std::cout Publishing zero speed to /cmd_vel. std::endl;}// 关闭客户端套接字close(clientSocket);// 在这里可以添加一些延时以避免过于频繁地连接服务器sleep(0.1);}rclcpp::spin(node);rclcpp::shutdown();return 0; } 到此这篇关于C实现本地TCP通讯的示例代码的文章就介绍到这了
http://www.w-s-a.com/news/499527/

相关文章:

  • 网站违反了 google 质量指南免费ppt模版网站
  • 郑州网站建设郑州网站建设成都那家网站建设好
  • 温州网站排名优化公司如何招聘软件网站开发人员
  • 成都 网站建设公司哪家好襄阳行业网站建设
  • wordpress 调用时间做网站seo的公司哪家好
  • 手机上网站搭建网站账户系统
  • 西乡网站的建设柳州建站
  • 宁夏网站建设怎么样互联网 网站设计
  • 成都关键词seo推广平台手机端关键词排名优化软件
  • 学做软件的网站卡盟平台
  • 网站构建建设案例展示关于做服饰网站的首页
  • 如何建设网站论坛凡科建站手机版登录
  • 建设银行门户网站惠州公司网站建设价格
  • 用python开发网站网站如何取消验证码
  • 公司做企业网站互联网建网站
  • 建网站需要的费用公司注册后怎么做网站
  • 宣传电脑的网站开发运动网站建设教程
  • 网站建设公司都会有哪些花销做网站公司商丘
  • 网站风格有哪些软件定制和开发
  • 公司网络维护具体做什么河南网站推广优化公司哪家好
  • 中学生制作的网站常平哪里有招计算机网站开发的
  • 原创网站模版苏州响应式网站建设
  • 做海报在哪个网站可以找素材网址申请注册方法
  • 网站建设分哪些类别别人做的网站不能用
  • 做网站网站会怎么样全国高校校园网站联盟建设
  • 整站下载器 做网站地图地产项目网站设计
  • 创意设计网站公司手机wap网站建设多少钱
  • 甘肃省第八建设集团公司网站seo高级优化方法
  • 精美的商城网站介绍最多人用的wordpress子主题
  • 检察门户网站建设情况俄外长抵达北京