sendmmsg - send multiple messages from a socket
#include <sys/socket.h> int sendmmsg(int s, struct mmsghdr *msgvec, unsigned int vlen, unsigned int flags);
The socket descriptor. For more information, see the socket(3C) man page.
Pointer to an array of mmsghdr structures
The number of elements in the array of mmsghdr structures
Flags for sending as in the sendmsg(3C) function.
The sendmmsg() function is an extension to the sendmsg(3C) function that allows the caller to transmit multiple messages on a socket in a single invocation.
A blocking sendmmsg() function call blocks until vlen messages have been sent.
A non-blocking call sends as many messages as possible, up to vlen, and returns immediately.
The mmsghdr structure is defined as:
struct mmsghdr { struct msghdr msg_hdr; /* Message header */ ssize_t msg_len; /* Number of bytes transmitted */ };
msghdr structure as described in socket.h(3HEAD)
Is used to return the number of bytes sent from the message in msg_hdr. This is equivalent to the return value from a single sendmsg() function call.
The contents of the msghdr structure differ depending on whether or not __USE_SUNOS_SOCKETS__ is defined before including the <sys/socket.h> header. All source files accessing msghdr structures or calling the sendmmsg() function must be compiled with either __USE_SUNOS_SOCKETS__ defined or all with it undefined — mixing and matching will not work. See the socket.h(3HEAD) manual page for details.
Upon successful completion, the sendmmsg() function returns the number of messages sent. The number of bytes sent is the arithmetic sum of the msg_len members of each mmsghdr structure.
The functions returns -1 if an error occurs and errno is set to indicate the error.
Errors are the same as per the sendmsg() function.
For more information, see the sendmsg(3C) man page.
See attributes(7) for descriptions of the following attributes:
|
fcntl(2), poll(2), recvmmsg(3C), select(3C), socket(3C), sendmsg(3C), socket.h(3HEAD), attributes(7)
The sendmmsg() function was added to Oracle Solaris in the 11.3 SRU 32 release.