ZMQ_SEND(3) 0MQ Manual ZMQ_SEND(3) NAME zmq_send - send a message part on a socket SYNOPSIS int zmq_send (void *socket, const void *buf, size_t len, int flags); DESCRIPTION The zmq_send() function shall queue a message created from the buffer ref- erenced by the buf and len arguments. The flags argument is a combination of the flags defined below: ZMQ_DONTWAIT For socket types (DEALER, PUSH) that block (either with ZMQ_IMMEDIATE option set and no peer available, or all peers having full high-water mark), specifies that the operation should be performed in non-blocking mode. If the message cannot be queued on the socket, the zmq_send() function shall fail with errno set to EAGAIN. ZMQ_SNDMORE Specifies that the message being sent is a multi-part message, and that further message parts are to follow. Refer to the section regarding multi-part messages below for a detailed description. Note A successful invocation of zmq_send() does not indicate that the mes- sage has been transmitted to the network, only that it has been queued on the socket and 0MQ has assumed responsibility for the message. Multi-part messages A 0MQ message is composed of 1 or more message parts. 0MQ ensures atomic delivery of messages: peers shall receive either all message parts of a message or none at all. The total number of message parts is unlimited ex- cept by available memory. An application that sends multi-part messages must use the ZMQ_SNDMORE flag when sending each message part except the final one. RETURN VALUE The zmq_send() function shall return number of bytes in the message if suc- cessful. Otherwise it shall return -1 and set errno to one of the values defined below. ERRORS EAGAIN Non-blocking mode was requested and the message cannot be sent at the moment. ENOTSUP The zmq_send() operation is not supported by this socket type. EINVAL The sender tried to send multipart data, which the socket type does not allow. EFSM The zmq_send() operation cannot be performed on this socket at the mo- ment due to the socket not being in the appropriate state. This error may occur with socket types that switch between several states, such as ZMQ_REP. See the messaging patterns section of zmq_socket(3) for more information. ETERM The 0MQ context associated with the specified socket was terminated. ENOTSOCK The provided socket was invalid. EINTR The operation was interrupted by delivery of a signal before the mes- sage was sent. EHOSTUNREACH The message cannot be routed. EXAMPLE Sending a multi-part message. /* Send a multi-part message consisting of three parts to socket */ rc = zmq_send (socket, "ABC", 3, ZMQ_SNDMORE); assert (rc == 3); rc = zmq_send (socket, "DEFGH", 5, ZMQ_SNDMORE); assert (rc == 5); /* Final part; no more parts to follow */ rc = zmq_send (socket, "JK", 2, 0); assert (rc == 2); SEE ALSO zmq_send_const(3) zmq_recv(3) zmq_socket(7) zmq(7) AUTHORS This page was written by the 0MQ community. To make a change please read the 0MQ Contribution Policy at http://www.zeromq.org/docs:contributing. 0MQ 4.3.5 10/09/2023 ZMQ_SEND(3)
NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | ERRORS | EXAMPLE | SEE ALSO | AUTHORS
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=zmq_send&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>
