You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							175 lines
						
					
					
						
							5.2 KiB
						
					
					
				
			
		
		
	
	
							175 lines
						
					
					
						
							5.2 KiB
						
					
					
				'\" t
 | 
						|
.\"     Title: zmq_recvmsg
 | 
						|
.\"    Author: [see the "AUTHORS" section]
 | 
						|
.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
 | 
						|
.\"      Date: 02/18/2017
 | 
						|
.\"    Manual: 0MQ Manual
 | 
						|
.\"    Source: 0MQ 4.2.2
 | 
						|
.\"  Language: English
 | 
						|
.\"
 | 
						|
.TH "ZMQ_RECVMSG" "3" "02/18/2017" "0MQ 4\&.2\&.2" "0MQ Manual"
 | 
						|
.\" -----------------------------------------------------------------
 | 
						|
.\" * Define some portability stuff
 | 
						|
.\" -----------------------------------------------------------------
 | 
						|
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						|
.\" http://bugs.debian.org/507673
 | 
						|
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
 | 
						|
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 | 
						|
.ie \n(.g .ds Aq \(aq
 | 
						|
.el       .ds Aq '
 | 
						|
.\" -----------------------------------------------------------------
 | 
						|
.\" * set default formatting
 | 
						|
.\" -----------------------------------------------------------------
 | 
						|
.\" disable hyphenation
 | 
						|
.nh
 | 
						|
.\" disable justification (adjust text to left margin only)
 | 
						|
.ad l
 | 
						|
.\" -----------------------------------------------------------------
 | 
						|
.\" * MAIN CONTENT STARTS HERE *
 | 
						|
.\" -----------------------------------------------------------------
 | 
						|
.SH "NAME"
 | 
						|
zmq_recvmsg \- receive a message part from a socket
 | 
						|
.SH "SYNOPSIS"
 | 
						|
.sp
 | 
						|
\fBint zmq_recvmsg (void \fR\fB\fI*socket\fR\fR\fB, zmq_msg_t \fR\fB\fI*msg\fR\fR\fB, int \fR\fB\fIflags\fR\fR\fB);\fR
 | 
						|
.SH "DESCRIPTION"
 | 
						|
.sp
 | 
						|
The \fIzmq_recvmsg()\fR function shall receive a message part from the socket referenced by the \fIsocket\fR argument and store it in the message referenced by the \fImsg\fR argument\&. Any content previously stored in \fImsg\fR shall be properly deallocated\&. If there are no message parts available on the specified \fIsocket\fR the \fIzmq_recvmsg()\fR function shall block until the request can be satisfied\&. The \fIflags\fR argument is a combination of the flags defined below:
 | 
						|
.PP
 | 
						|
\fBZMQ_DONTWAIT\fR
 | 
						|
.RS 4
 | 
						|
Specifies that the operation should be performed in non\-blocking mode\&. If there are no messages available on the specified
 | 
						|
\fIsocket\fR, the
 | 
						|
\fIzmq_recvmsg()\fR
 | 
						|
function shall fail with
 | 
						|
\fIerrno\fR
 | 
						|
set to EAGAIN\&.
 | 
						|
.RE
 | 
						|
.if n \{\
 | 
						|
.sp
 | 
						|
.\}
 | 
						|
.RS 4
 | 
						|
.it 1 an-trap
 | 
						|
.nr an-no-space-flag 1
 | 
						|
.nr an-break-flag 1
 | 
						|
.br
 | 
						|
.ps +1
 | 
						|
\fBNote\fR
 | 
						|
.ps -1
 | 
						|
.br
 | 
						|
.sp
 | 
						|
this API method is deprecated in favor of zmq_msg_recv(3)\&.
 | 
						|
.sp .5v
 | 
						|
.RE
 | 
						|
.SS "Multi\-part messages"
 | 
						|
.sp
 | 
						|
A 0MQ message is composed of 1 or more message parts\&. Each message part is an independent \fIzmq_msg_t\fR in its own right\&. 0MQ ensures atomic delivery of messages: peers shall receive either all \fImessage parts\fR of a message or none at all\&. The total number of message parts is unlimited except by available memory\&.
 | 
						|
.sp
 | 
						|
An application that processes multi\-part messages must use the \fIZMQ_RCVMORE\fR \fBzmq_getsockopt\fR(3) option after calling \fIzmq_recvmsg()\fR to determine if there are further parts to receive\&.
 | 
						|
.SH "RETURN VALUE"
 | 
						|
.sp
 | 
						|
The \fIzmq_recvmsg()\fR function shall return number of bytes in the message if successful\&. Otherwise it shall return \-1 and set \fIerrno\fR to one of the values defined below\&.
 | 
						|
.SH "ERRORS"
 | 
						|
.PP
 | 
						|
\fBEAGAIN\fR
 | 
						|
.RS 4
 | 
						|
Non\-blocking mode was requested and no messages are available at the moment\&.
 | 
						|
.RE
 | 
						|
.PP
 | 
						|
\fBENOTSUP\fR
 | 
						|
.RS 4
 | 
						|
The
 | 
						|
\fIzmq_recvmsg()\fR
 | 
						|
operation is not supported by this socket type\&.
 | 
						|
.RE
 | 
						|
.PP
 | 
						|
\fBEFSM\fR
 | 
						|
.RS 4
 | 
						|
The
 | 
						|
\fIzmq_recvmsg()\fR
 | 
						|
operation cannot be performed on this socket at the moment 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
 | 
						|
\fImessaging patterns\fR
 | 
						|
section of
 | 
						|
\fBzmq_socket\fR(3)
 | 
						|
for more information\&.
 | 
						|
.RE
 | 
						|
.PP
 | 
						|
\fBETERM\fR
 | 
						|
.RS 4
 | 
						|
The 0MQ
 | 
						|
\fIcontext\fR
 | 
						|
associated with the specified
 | 
						|
\fIsocket\fR
 | 
						|
was terminated\&.
 | 
						|
.RE
 | 
						|
.PP
 | 
						|
\fBENOTSOCK\fR
 | 
						|
.RS 4
 | 
						|
The provided
 | 
						|
\fIsocket\fR
 | 
						|
was invalid\&.
 | 
						|
.RE
 | 
						|
.PP
 | 
						|
\fBEINTR\fR
 | 
						|
.RS 4
 | 
						|
The operation was interrupted by delivery of a signal before a message was available\&.
 | 
						|
.RE
 | 
						|
.PP
 | 
						|
\fBEFAULT\fR
 | 
						|
.RS 4
 | 
						|
The message passed to the function was invalid\&.
 | 
						|
.RE
 | 
						|
.SH "EXAMPLE"
 | 
						|
.PP
 | 
						|
\fBReceiving a message from a socket\fR. 
 | 
						|
.sp
 | 
						|
.if n \{\
 | 
						|
.RS 4
 | 
						|
.\}
 | 
						|
.nf
 | 
						|
/* Create an empty 0MQ message */
 | 
						|
zmq_msg_t msg;
 | 
						|
int rc = zmq_msg_init (&msg);
 | 
						|
assert (rc == 0);
 | 
						|
/* Block until a message is available to be received from socket */
 | 
						|
rc = zmq_recvmsg (socket, &msg, 0);
 | 
						|
assert (rc != \-1);
 | 
						|
/* Release message */
 | 
						|
zmq_msg_close (&msg);
 | 
						|
.fi
 | 
						|
.if n \{\
 | 
						|
.RE
 | 
						|
.\}
 | 
						|
.PP
 | 
						|
\fBReceiving a multi-part message\fR. 
 | 
						|
.sp
 | 
						|
.if n \{\
 | 
						|
.RS 4
 | 
						|
.\}
 | 
						|
.nf
 | 
						|
int more;
 | 
						|
size_t more_size = sizeof (more);
 | 
						|
do {
 | 
						|
    /* Create an empty 0MQ message to hold the message part */
 | 
						|
    zmq_msg_t part;
 | 
						|
    int rc = zmq_msg_init (&part);
 | 
						|
    assert (rc == 0);
 | 
						|
    /* Block until a message is available to be received from socket */
 | 
						|
    rc = zmq_recvmsg (socket, &part, 0);
 | 
						|
    assert (rc != \-1);
 | 
						|
    /* Determine if more message parts are to follow */
 | 
						|
    rc = zmq_getsockopt (socket, ZMQ_RCVMORE, &more, &more_size);
 | 
						|
    assert (rc == 0);
 | 
						|
    zmq_msg_close (&part);
 | 
						|
} while (more);
 | 
						|
.fi
 | 
						|
.if n \{\
 | 
						|
.RE
 | 
						|
.\}
 | 
						|
.sp
 | 
						|
.SH "SEE ALSO"
 | 
						|
.sp
 | 
						|
\fBzmq_recv\fR(3) \fBzmq_send\fR(3) \fBzmq_getsockopt\fR(3) \fBzmq_socket\fR(7) \fBzmq\fR(7)
 | 
						|
.SH "AUTHORS"
 | 
						|
.sp
 | 
						|
This page was written by the 0MQ community\&. To make a change please read the 0MQ Contribution Policy at \m[blue]\fBhttp://www\&.zeromq\&.org/docs:contributing\fR\m[]\&.
 | 
						|
 |