.TH zmq_socket 3 "" "(c)2007-2009 FastMQ Inc." "0MQ User Manuals" .SH NAME zmq_socket \- creates 0MQ socket .SH SYNOPSIS .B void *zmq_socket (void *context, int type); .SH DESCRIPTION Open a socket within the specified .IR context . To create a context, use .IR zmq_init function. .IR type argument can be one of the values defined below. Note that each socket is owned by exactly one thread (the one that it was created from) and should not be used from any other thread. .IP "\fBZMQ_P2P\fP" Socket to communicate with a single peer. Allows for only a single connect or a single bind. There's no message routing or message filtering involved. Compatible peer sockets: ZMQ_P2P. .IP "\fBZMQ_PUB\fP" Socket to distribute data. Recv fuction is not implemented for this socket type. Messages are distributed in fanout fashion to all the peers. Compatible peer sockets: ZMQ_SUB. .IP "\fBZMQ_SUB\fP" Socket to subscribe for data. Send function is not implemented for this socket type. Initially, socket is subscribed for no messages. Use ZMQ_SUBSCRIBE option to specify which messages to subscribe for. Compatible peer sockets: ZMQ_PUB. .IP "\fBZMQ_REQ\fP" Socket to send requests and receive replies. Requests are load-balanced among all the peers. This socket type allows only an alternated sequence of send's and recv's. Compatible peer sockets: ZMQ_REP, ZMQ_XREP. .IP "\fBZMQ_REP\fP" Socket to receive requests and send replies. This socket type allows only an alternated sequence of recv's and send's. Each send is routed to the peer that issued the last received request. Compatible peer sockets: ZMQ_REQ, ZMQ_XREQ. .IP "\fBZMQ_XREQ\fP" Special socket type to be used in request/reply middleboxes such as .BR zmq_queue(7) . Requests forwarded using this socket type should be tagged by a proper postix identifying the original requester. Replies received by this socket are tagged with a proper postfix that can be use to route the reply back to the original requester. Compatible peer sockets: ZMQ_REP, ZMQ_XREP. .IP "\fBZMQ_XREP\fP" Special socket type to be used in request/reply middleboxes such as .BR zmq_queue(7) . Requests received using this socket are already properly tagged with postfix identifying the original requester. When sending a reply via XREP socket the message should be tagged with a postfix from a corresponding request. Compatible peer sockets: ZMQ_REQ, ZMQ_XREQ. .IP "\fBZMQ_UPSTREAM\fP" Socket to receive messages from up the stream. Messages are fair-queued from among all the connected peers. Send function is not implemented for this socket type. Compatible peer sockets: ZMQ_DOWNSTREAM. .IP "\fBZMQ_DOWNSTREAM\fP" Socket to send messages down stream. Messages are load-balanced among all the connected peers. Send function is not implemented for this socket type. Compatible peer sockets: ZMQ_UPSTREAM. .SH RETURN VALUE Function returns socket handle is successful. Otherwise it returns NULL and sets errno to one of the values below. .SH ERRORS .IP "\fBEINVAL\fP" invalid socket type. .IP "\fBEMTHREAD\fP" the number of application threads allowed to own 0MQ sockets was exceeded. See .IR app_threads parameter to .IR zmq_init function. .SH EXAMPLE .nf void *s = zmq_socket (context, ZMQ_PUB); assert (s); int rc = zmq_bind (s, "tcp://192.168.0.1:5555"); assert (rc == 0); .fi .SH SEE ALSO .BR zmq_init (3) .BR zmq_setsockopt (3) .BR zmq_bind (3) .BR zmq_connect (3) .BR zmq_send (3) .BR zmq_flush (3) .BR zmq_recv (3) .SH AUTHOR Martin Sustrik