Linux中的recvmsg函数用于从套接字接收数据并存储到指定的缓冲区中。其基本用法如下:
包含头文件#include <sys/socket.h>#include <sys/types.h>创建msghdr结构体和iovec结构体struct iovec iov;struct msghdr msg;初始化iovec结构体,将接收数据存储到缓冲区中char buf[1024]; // 缓冲区iov.iov_base = buf; // 设定数据存储位置iov.iov_len = sizeof(buf); // 缓冲区大小初始化msghdr结构体msg.msg_name = NULL; // 不需要指定地址msg.msg_namelen = 0;msg.msg_iov = &iov; // 指定缓冲区msg.msg_iovlen = 1; // 缓冲区数量调用recvmsg函数进行数据接收ssize_t num_bytes = recvmsg(sockfd, &msg, 0);检查返回值,处理接收到的数据if (num_bytes > 0) { // 数据接收成功,处理接收到的数据} else if (num_bytes == 0) { // 连接关闭} else { // 接收数据失败}注意:在实际使用中,还需要对返回值和接收到的数据进行错误处理和解析。


