SENDMSG(3POSIX) | POSIX Programmer's Manual | SENDMSG(3POSIX) |
This manual page is part of the POSIX Programmer's Manual. The Linux implementation of this interface may differ (consult the corresponding Linux manual page for details of Linux behavior), or the interface may not be implemented on Linux.
sendmsg — send a message on a socket using a message structure
#include <sys/socket.h>
ssize_t sendmsg(int socket, const struct msghdr *message, int flags);
The sendmsg() function shall send a message through a connection-mode or connectionless-mode socket. If the socket is a connectionless-mode socket, the message shall be sent to the address specified by msghdr if no pre-specified peer address has been set. If a peer address has been pre-specified, either the message shall be sent to the address specified in msghdr (overriding the pre-specified peer address), or the function shall return -1 and set errno to [EISCONN]. If the socket is connection-mode, the destination address in msghdr shall be ignored.
The sendmsg() function takes the following arguments:
The msg_iov and msg_iovlen fields of message specify zero or more buffers containing the data to be sent. msg_iov points to an array of iovec structures; msg_iovlen shall be set to the dimension of this array. In each iovec structure, the iov_base field specifies a storage area and the iov_len field gives its size in bytes. Some of these sizes can be zero. The data from each storage area indicated by msg_iov is sent in turn.
Successful completion of a call to sendmsg() does not guarantee delivery of the message. A return value of -1 indicates only locally-detected errors.
If space is not available at the sending socket to hold the message to be transmitted and the socket file descriptor does not have O_NONBLOCK set, the sendmsg() function shall block until space is available. If space is not available at the sending socket to hold the message to be transmitted and the socket file descriptor does have O_NONBLOCK set, the sendmsg() function shall fail.
If the socket protocol supports broadcast and the specified address is a broadcast address for the socket protocol, sendmsg() shall fail if the SO_BROADCAST option is not set for the socket.
The socket in use may require the process to have appropriate privileges to use the sendmsg() function.
Upon successful completion, sendmsg() shall return the number of bytes sent. Otherwise, -1 shall be returned and errno set to indicate the error.
The sendmsg() function shall fail if:
If the address family of the socket is AF_UNIX, then sendmsg() shall fail if:
The sendmsg() function may fail if:
If the address family of the socket is AF_UNIX, then sendmsg() may fail if:
The following sections are informative.
Done.
The select() and poll() functions can be used to determine when it is possible to send more data.
None.
None.
getsockopt(), poll(), pselect(), recv(), recvfrom(), recvmsg(), send(), sendto(), setsockopt(), shutdown(), socket()
The Base Definitions volume of POSIX.1‐2017, <sys_socket.h>
Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1-2017, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 7, 2018 Edition, Copyright (C) 2018 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group. In the event of any discrepancy between this version and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at http://www.opengroup.org/unix/online.html .
Any typographical or formatting errors that appear in this page are most likely to have been introduced during the conversion of the source files to man page format. To report such errors, see https://www.kernel.org/doc/man-pages/reporting_bugs.html .
2017 | IEEE/The Open Group |