2010-02-10 16:18:46 +01:00
|
|
|
zmq_socket(3)
|
|
|
|
=============
|
|
|
|
|
|
|
|
|
|
|
|
NAME
|
|
|
|
----
|
|
|
|
zmq_socket - creates 0MQ socket
|
|
|
|
|
|
|
|
|
|
|
|
SYNOPSIS
|
|
|
|
--------
|
|
|
|
'void *zmq_socket (void *context, int type);'
|
|
|
|
|
|
|
|
|
|
|
|
DESCRIPTION
|
|
|
|
-----------
|
|
|
|
Open a socket within the specified 'context'. To create a context, use
|
|
|
|
'zmq_init' function. '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.
|
|
|
|
|
|
|
|
*ZMQ_P2P*::
|
|
|
|
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.
|
|
|
|
|
|
|
|
*ZMQ_PUB*::
|
|
|
|
Socket to distribute data. Recv function is not implemented for this socket
|
|
|
|
type. Messages are distributed in fanout fashion to all the peers.
|
|
|
|
+
|
|
|
|
Compatible peer sockets: ZMQ_SUB.
|
|
|
|
|
|
|
|
*ZMQ_SUB*::
|
|
|
|
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.
|
|
|
|
|
|
|
|
*ZMQ_REQ*::
|
|
|
|
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.
|
|
|
|
|
|
|
|
*ZMQ_REP*::
|
|
|
|
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.
|
|
|
|
|
|
|
|
*ZMQ_XREQ*::
|
|
|
|
Special socket type to be used in request/reply middleboxes such as
|
|
|
|
linkzmq:zmq_queue[7]. Requests forwarded using this socket type should be
|
|
|
|
tagged by a proper prefix identifying the original requester. Replies received
|
2010-02-23 10:01:54 +01:00
|
|
|
by this socket are tagged with a proper prefix that can be use to route the
|
2010-02-10 16:18:46 +01:00
|
|
|
reply back to the original requester.
|
|
|
|
+
|
|
|
|
Compatible peer sockets: ZMQ_REP, ZMQ_XREP.
|
|
|
|
|
|
|
|
*ZMQ_XREP*::
|
|
|
|
Special socket type to be used in request/reply middleboxes such as
|
|
|
|
linkzmq:zmq_queue[7]. Requests received using this socket are already properly
|
|
|
|
tagged with prefix identifying the original requester. When sending a reply via
|
|
|
|
XREP socket the message should be tagged with a prefix from a corresponding
|
|
|
|
request.
|
|
|
|
+
|
|
|
|
Compatible peer sockets: ZMQ_REQ, ZMQ_XREQ.
|
|
|
|
|
|
|
|
*ZMQ_UPSTREAM*::
|
|
|
|
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.
|
|
|
|
|
|
|
|
*ZMQ_DOWNSTREAM*::
|
|
|
|
Socket to send messages down stream. Messages are load-balanced among all the
|
|
|
|
connected peers. Recv function is not implemented for this socket type.
|
|
|
|
+
|
|
|
|
Compatible peer sockets: ZMQ_UPSTREAM.
|
|
|
|
|
|
|
|
|
|
|
|
RETURN VALUE
|
|
|
|
------------
|
|
|
|
Function returns socket handle is successful. Otherwise it returns NULL and
|
|
|
|
sets errno to one of the values below.
|
|
|
|
|
|
|
|
|
|
|
|
ERRORS
|
|
|
|
------
|
|
|
|
*EINVAL*::
|
|
|
|
invalid socket type.
|
|
|
|
|
|
|
|
*EMTHREAD*::
|
|
|
|
the number of application threads allowed to own 0MQ sockets was exceeded.
|
|
|
|
See 'app_threads' parameter to 'zmq_init' function.
|
|
|
|
|
|
|
|
|
|
|
|
EXAMPLE
|
|
|
|
-------
|
|
|
|
----
|
|
|
|
void *s = zmq_socket (context, ZMQ_PUB);
|
|
|
|
assert (s);
|
|
|
|
int rc = zmq_bind (s, "tcp://192.168.0.1:5555");
|
|
|
|
assert (rc == 0);
|
|
|
|
----
|
|
|
|
|
|
|
|
|
|
|
|
SEE ALSO
|
|
|
|
--------
|
|
|
|
linkzmq:zmq_init[3]
|
|
|
|
linkzmq:zmq_setsockopt[3]
|
|
|
|
linkzmq:zmq_bind[3]
|
|
|
|
linkzmq:zmq_connect[3]
|
|
|
|
linkzmq:zmq_send[3]
|
|
|
|
linkzmq:zmq_flush[3]
|
|
|
|
linkzmq:zmq_recv[3]
|
|
|
|
|
|
|
|
|
|
|
|
AUTHOR
|
|
|
|
------
|
|
|
|
Martin Sustrik <sustrik at 250bpm dot com>
|