ZMQ\_BIND(3) 0MQ Manual ZMQ\_BIND(3)

# [NAME](#NAME)

zmq\_bind - accept incoming connections on a socket

# [SYNOPSIS](#SYNOPSIS)

**int zmq\_bind (void \*socket, const char \*endpoint);**

# [DESCRIPTION](#DESCRIPTION)

The *zmq\_bind()* function binds the *socket* to a local *endpoint* and then accepts incoming connections on that endpoint.

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.

0MQ provides the the following transports:

*tcp*

unicast transport using TCP, see [**zmq\_tcp**(7)](/man/enterprise-packages/zeromq-nocurve/zmq_tcp.7)

*ipc*

local inter-process communication transport, see [**zmq\_ipc**(7)](/man/enterprise-packages/zeromq-nocurve/zmq_ipc.7)

*inproc*

local in-process (inter-thread) communication transport, see [**zmq\_inproc**(7)](/man/enterprise-packages/zeromq-nocurve/zmq_inproc.7)

*pgm*, *epgm*

reliable multicast transport using PGM, see [**zmq\_pgm**(7)](/man/enterprise-packages/zeromq-nocurve/zmq_pgm.7)

*vmci*

virtual machine communications interface (VMCI), see [**zmq\_vmci**(7)](/man/enterprise-packages/zeromq-nocurve/zmq_vmci.7)

*udp*

unreliable unicast and multicast using UDP, see [**zmq\_udp**(7)](/man/enterprise-packages/zeromq-nocurve/zmq_udp.7)

Every 0MQ socket type except *ZMQ\_PAIR* and *ZMQ\_CHANNEL* supports one-to-many and many-to-one semantics. The precise semantics depend on the socket type and are defined in [**zmq\_socket**(3)](/man/enterprise-packages/zeromq-nocurve/zmq_socket.3).

The *ipc*, *tcp*, *vmci* and *udp* transports accept wildcard addresses: see [**zmq\_ipc**(7)](/man/enterprise-packages/zeromq-nocurve/zmq_ipc.7), [**zmq\_tcp**(7)](/man/enterprise-packages/zeromq-nocurve/zmq_tcp.7), [**zmq\_vmci**(7)](/man/enterprise-packages/zeromq-nocurve/zmq_vmci.7) and [**zmq\_udp**(7)](/man/enterprise-packages/zeromq-nocurve/zmq_udp.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 [**zmq\_socket**(3)](/man/enterprise-packages/zeromq-nocurve/zmq_socket.3). By contrast, following a libzmq:zmq\_connect\[3], the socket enters the *ready* state.

# [RETURN VALUE](#RETURN_VALUE)

The *zmq\_bind()* function returns zero if successful. Otherwise it returns -1 and sets *errno* to one of the values defined below.

# [ERRORS](#ERRORS)

**EINVAL**

The endpoint supplied is invalid.

**EPROTONOSUPPORT**

The requested *transport* protocol is not supported.

**ENOCOMPATPROTO**

The requested *transport* protocol is not compatible with the socket type.

**EADDRINUSE**

The requested *address* is already in use.

**EADDRNOTAVAIL**

The requested *address* was not local.

**ENODEV**

The requested *address* specifies a nonexistent interface.

**ETERM**

The 0MQ *context* associated with the specified *socket* was terminated.

**ENOTSOCK**

The provided *socket* was invalid.

**EMTHREAD**

No I/O thread is available to accomplish the task.

# [EXAMPLE](#EXAMPLE)

**Binding a publisher socket to an in-process and a TCP transport**.

```
/* Create a ZMQ_PUB socket */
void *socket = zmq_socket (context, ZMQ_PUB);
assert (socket);
/* Bind it to a in-process transport with the address 'my_publisher' */
int rc = zmq_bind (socket, "inproc://my_publisher");
assert (rc == 0);
/* Bind it to a TCP transport on port 5555 of the 'eth0' interface */
rc = zmq_bind (socket, "tcp://eth0:5555");
assert (rc == 0);
```

# [SEE ALSO](#SEE_ALSO)

[**zmq\_connect**(3)](/man/enterprise-packages/zeromq-nocurve/zmq_connect.3) [**zmq\_socket**(3)](/man/enterprise-packages/zeromq-nocurve/zmq_socket.3) [**zmq**(7)](/man/enterprise-packages/zeromq-nocurve/zmq.7)

# [AUTHORS](#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**.

10/26/2026 0MQ 4.3.5

---

Document: zmq_bind(3) from zeromq-nocurve 4.3.5-r9 (Chainguard OS)
Source: https://github.com/zeromq/libzmq
