sendmmsg()返回-1,没有可用的缓冲区空间,为什么memset解决了这个问题?

问题描述 投票:-1回答:1

struct mmsghdr中的三个成员之一:

void         *msg_control;    /* ancillary data, see below */
size_t        msg_controllen; /* ancillary data buffer len */
int           msg_flags;      /* flags on received message */

引起问题:sendmmsg()返回-1,“没有可用的缓冲区空间”。

memset(&(Msgs),0,sizeof(struct mmsghdr));之后,问题消失了。手册页之一说msg_flags被忽略了,所以msg_control搞砸了吗?

c sockets memset
1个回答
0
投票

可能您已采用此结构的局部变量。默认情况下,局部变量使用垃圾初始化,从而导致此问题。您甚至可以通过使用相同的全局变量来尝试此操作。

© www.soinside.com 2019 - 2024. All rights reserved.