8

Linux では、私の間違いでない限り、アプリケーションはソケット呼び出しファミリを使用して、データグラム トランスポートで一度に 1 つのパケットを送受信できます。

アプリケーションがデータグラム トランスポートの 1 回の呼び出しで複数のパケットを送受信する手段を Linux が提供しているかどうかを知りたいです。

4

2 に答える 2

11

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

于 2013-10-24T17:52:02.967 に答える