看作recvmmsg()有一个对应的sendmmsg()。我想知道我们是否可以使用sendto()或sendmsg()代替,recvmmsg()仍然有效吗?还是我们必须使用sendmmsg()?
还有一点需要注意的是,sendto()是唯一一个不包含msghdr * msg参数的参数,在收到带有recvmmsg()的数据包后,它会在到达时被打包到msghdr中吗?
答案 0 :(得分:1)
是的,他们是一回事。
来自man sendmmsg
The sendmmsg() system call is an extension of sendmsg(2)
that allows the caller to transmit multiple messages on
a socket using a single system call. (This has performance
benefits for some applications.)
所以基本上,当你打电话给sendmmsg(sock, msglist, n, flags)
时,你正在做
for (i=0; i<n; i++)
sendmsg(sock, msglist[i], flags);