int zmq_send (void *socket, zmq_msg_t *msg, int flags);
The zmq_send() function shall queue the message referenced by the msg argument to be sent to the socket referenced by the socket argument. The flags argument is a combination of the flags defined below:
ZMQ_NOBLOCK
ZMQ_SNDMORE
A successful invocation of zmq_send() does not indicate that the message has been transmitted to the network, only that it has been queued on the socket and 0MQ has assumed responsibility for the message.
A 0MQ message is composed of 1 or more message parts; each message part is an independent zmq_msg_t in its own right. 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.
An application wishing to send a multi-part message does so by specifying the ZMQ_SNDMORE flag to zmq_send(). The presence of this flag indicates to 0MQ that the message being sent is a multi-part message and that more message parts are to follow. When the application wishes to send the final message part it does so by calling zmq_send() without the ZMQ_SNDMORE flag; this indicates that no more message parts are to follow.
The zmq_send() function shall return zero if successful. Otherwise it shall return -1 and set errno to one of the values defined below.
EAGAIN
ENOTSUP
EFSM
ETERM
EFAULT
Filling in a message and sending it to a socket.
/* Create a new message, allocating 6 bytes for message content */ zmq_msg_t msg; int rc = zmq_msg_init_size (&msg, 6); assert (rc == 0); /* Fill in message content with 'AAAAAA' */ memset (zmq_msg_data (&msg), 'A', 6); /* Send the message to the socket */ rc = zmq_send (socket, &msg, 0); assert (rc == 0);
Sending a multi-part message.
/* Send a multi-part message consisting of three parts to socket */ rc = zmq_send (socket, &part1, ZMQ_SNDMORE); rc = zmq_send (socket, &part2, ZMQ_SNDMORE); /* Final part; no more parts to follow */ rc = zmq_send (socket, &part3, 0);
zmq_recv(3) zmq_socket(7) zmq(7)
The 0MQ documentation was written by Martin Sustrik <m[blue]sustrik@250bpm.comm[][1]> and Martin Lucina <m[blue]mato@kotelna.skm[][2]>.