订阅的自定义消息类型通过sendto 函数发送出去
时间: 2023-05-30 09:04:53 浏览: 140
sendto 函数是用来将数据通过 socket 发送出去的函数,它的函数原型如下:
```c++
int sendto(int sockfd, const void *buf, size_t len, int flags,
const struct sockaddr *dest_addr, socklen_t addrlen);
```
其中,sockfd 是指向打开的 socket 的文件描述符;buf 是指向要发送的数据的指针;len 是要发送的数据的长度;flags 是一组标志位,可以用来控制发送的行为,通常为 0;dest_addr 是指向目标地址的指针;addrlen 是目标地址的长度。
对于订阅的自定义消息类型,可以使用 ROS 中的 roscpp::Publisher 类来进行发送,其 send 函数会自动将消息序列化为字节数组并发送出去。示例代码如下:
```c++
ros::NodeHandle nh;
ros::Publisher pub = nh.advertise<my_msgs::MyMessage>("my_topic", 10);
my_msgs::MyMessage msg;
msg.field1 = 1;
msg.field2 = 2;
pub.publish(msg);
```
在上面的代码中,我们创建了一个名为 my_topic 的主题,并将其类型设置为 my_msgs::MyMessage。然后创建了一个 my_msgs::MyMessage 类型的消息,并将其 field1 和 field2 字段分别设置为 1 和 2。最后通过 pub.publish(msg) 函数将消息发送出去。ROS 会自动将消息序列化为字节数组并通过 socket 发送出去。
阅读全文