linux - 在单个系统调用中接收多个数据报

标签 linux network-programming

在 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.

http://man7.org/linux/man-pages/man2/sendmmsg.2.html

关于linux - 在单个系统调用中接收多个数据报,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17701307/

相关文章:

arrays - Bash 映射两个数组

linux - 找不到以 root 身份运行的库

php - 从主机访问虚拟 linux 机器上的 PHP 网站

c - 关于使用 Sockets API 的基于 TCP 的简单回显服务器

c++ - 如何使 TCP 套接字与 SO_BINDTODEVICE 一起工作(针对路由表)

c - 远程过程调用 : how to declare two versions of same program in a XDR file

linux - 将一列按每个拆分为 "n"列,每列一个字符

linux - 试图获取时间命令的输出

java - 使用java中的可变对象将XML数据写入OutputStream

sockets - 通过 ssh 隧道使用套接字进行双向通信