在 Linux 上,除非我弄错了,否则应用程序可以使用套接字调用系列在数据报传输上一次发送或接收一个数据包。
想知道 Linux 是否为应用程序提供了一种方法,可以在一次数据报传输调用中发送和接收多个数据包。
最佳答案
使用 recvmmsg 接收多个数据报包(例如 UDP)
int recvmmsg(int sockfd, struct mmsghdr *msgvec, unsigned int vlen,
unsigned int flags, struct timespec *timeout);
DESCRIPTION
The recvmmsg() system call is an extension of recvmsg(2) that allows
the caller to receive multiple messages from a socket using a single
system call. ...
http://man7.org/linux/man-pages/man2/recvmmsg.2.html
使用sendmmsg发送...
int sendmmsg(int sockfd, struct mmsghdr *msgvec, unsigned int vlen,
unsigned int flags);
DESCRIPTION
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.
关于linux - 在单个系统调用中接收多个数据报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17701307/