/sys$common/syshlp/helplib.hlb TCPIP Services, Programming Interfaces, Sockets API, sendmsg(), Description *Conan The Librarian (sorry for the slow response - running on an old VAX) |
You can use this function on any socket to send data to any named socket. The data in the msg_iov field of the msghdr structure is sent to the socket whose address is specified in the msg_name field of the structure. The receiving socket gets the data using the read(), recv(), recvfrom(), or recvmsg() function. When the iovec array specifies more than one buffer, the data is gathered from all specified buffers before being sent. If no space is available to buffer the data on the receiving end of the connection, the sendmsg() function blocks until buffer space becomes available. If the socket is defined as nonblocking, the sendmsg() function fails with an errno indication of EWOULDBLOCK. If the message is too large to be sent in one piece and the socket type requires that messages be sent atomically (SOCK_DGRAM), the sendmsg() fails with an errno indication of EMSGSIZE. If the address specified is an INADDR_BROADCAST address, the SO_BROADCAST socket option must be set and the process must have a system UIC, OPER, SYSPRV, or BYPASS privilege for the I/O operation to succeed. No indication of failure to deliver is implicit in the sendmsg() function. All errors (except EWOULDBLOCK) are detected locally. You can use the select() function to determine when it is possible to send more data. Related Functions See also read(), recv(), recvfrom(), recvmsg(), socket(), and getsockopt().
|