zmq_bind.txt 3.1 KB
Newer Older
1 2 3 4 5 6
zmq_bind(3)
===========


NAME
----
Pieter Hintjens's avatar
Pieter Hintjens committed
7
zmq_bind - accept incoming connections on a socket
8 9 10 11


SYNOPSIS
--------
12
*int zmq_bind (void '*socket', const char '*endpoint');*
13 14 15 16


DESCRIPTION
-----------
Pieter Hintjens's avatar
Pieter Hintjens committed
17 18
The _zmq_bind()_ function binds the 'socket' to a local 'endpoint' and then
accepts incoming connections on that endpoint.
19

Pieter Hintjens's avatar
Pieter Hintjens committed
20 21 22
The 'endpoint' is a string consisting of a 'transport'`://` followed by an
'address'. The 'transport' specifies the underlying protocol to use. The
'address' specifies the transport-specific address to bind to.
Martin Lucina's avatar
Martin Lucina committed
23

Pieter Hintjens's avatar
Pieter Hintjens committed
24
0MQ provides the the following transports:
Martin Lucina's avatar
Martin Lucina committed
25

26
'tcp':: unicast transport using TCP, see linkzmq:zmq_tcp[7]
Pieter Hintjens's avatar
Pieter Hintjens committed
27 28
'ipc':: local inter-process communication transport, see linkzmq:zmq_ipc[7]
'inproc':: local in-process (inter-thread) communication transport, see linkzmq:zmq_inproc[7]
29
'pgm', 'epgm':: reliable multicast transport using PGM, see linkzmq:zmq_pgm[7]
Martin Lucina's avatar
Martin Lucina committed
30

Pieter Hintjens's avatar
Pieter Hintjens committed
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
Every 0MQ socket type except 'ZMQ_PAIR' supports one-to-many and many-to-one
semantics. The precise semantics depend on the socket type and are defined in
linkzmq:zmq_socket[3].

The 'ipc' and 'tcp' transports accept wildcard addresses: see linkzmq:zmq_ipc[7]
and linkzmq:zmq_tcp[7] for details.

NOTE: the address syntax may be different for _zmq_bind()_ and _zmq_connect()_
especially for the 'tcp', 'pgm' and 'epgm' transports.

NOTE: following a _zmq_bind()_, the socket enters a 'mute' state unless or
until at least one incoming or outgoing connection is made, at which point
the socket enters a 'ready' state. In the mute state, the socket blocks or
drops messages according to the socket type, as defined in linkzmq:zmq_socket[3].
By contrast, following a libzmq:zmq_connect[3], the socket enters the 'ready' state.
46 47 48 49


RETURN VALUE
------------
Pieter Hintjens's avatar
Pieter Hintjens committed
50 51
The _zmq_bind()_ function returns zero if successful. Otherwise it returns
`-1` and sets 'errno' to one of the values defined below.
52 53 54 55


ERRORS
------
56 57
*EINVAL*::
The endpoint supplied is invalid.
58
*EPROTONOSUPPORT*::
Martin Lucina's avatar
Martin Lucina committed
59
The requested 'transport' protocol is not supported.
60
*ENOCOMPATPROTO*::
Martin Lucina's avatar
Martin Lucina committed
61
The requested 'transport' protocol is not compatible with the socket type.
62
*EADDRINUSE*::
Martin Lucina's avatar
Martin Lucina committed
63
The requested 'address' is already in use.
64
*EADDRNOTAVAIL*::
Martin Lucina's avatar
Martin Lucina committed
65
The requested 'address' was not local.
66
*ENODEV*::
Martin Lucina's avatar
Martin Lucina committed
67
The requested 'address' specifies a nonexistent interface.
68
*ETERM*::
69
The 0MQ 'context' associated with the specified 'socket' was terminated.
70 71
*ENOTSOCK*::
The provided 'socket' was invalid.
72 73
*EMTHREAD*::
No I/O thread is available to accomplish the task.
74 75 76 77


EXAMPLE
-------
Martin Lucina's avatar
Martin Lucina committed
78
.Binding a publisher socket to an in-process and a TCP transport
79
----
Martin Lucina's avatar
Martin Lucina committed
80 81 82
/* Create a ZMQ_PUB socket */
void *socket = zmq_socket (context, ZMQ_PUB);
assert (socket);
83
/* Bind it to a in-process transport with the address 'my_publisher' */
Martin Lucina's avatar
Martin Lucina committed
84
int rc = zmq_bind (socket, "inproc://my_publisher");
85
assert (rc == 0);
86 87
/* Bind it to a TCP transport on port 5555 of the 'eth0' interface */
rc = zmq_bind (socket, "tcp://eth0:5555");
88 89 90 91 92 93 94 95 96 97
assert (rc == 0);
----


SEE ALSO
--------
linkzmq:zmq_connect[3]
linkzmq:zmq_socket[3]
linkzmq:zmq[7]

98 99 100

AUTHORS
-------
Pieter Hintjens's avatar
Pieter Hintjens committed
101 102
This 0MQ manual page was written by Pieter Hintjens <ph@imatix.com>,
Martin Sustrik <sustrik@250bpm.com> and Martin Lucina <mato@kotelna.sk>.