Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
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)

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>

home | help