# zmq_bind(3) Manual Page

## NAME

zmq_bind - accept incoming connections on a socket

## SYNOPSIS

int zmq_bind (void *socket, const char *endpoint);

## 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.

ØMQ provides the the following transports:

tcp

  unicast transport using TCP, see zmq_tcp(7)

ipc

  local inter-process communication transport, see zmq_ipc(7)

inproc

  local in-process (inter-thread) communication transport, see zmq_inproc(7)

pgm, epgm

  reliable multicast transport using PGM, see zmq_pgm(7)

vmci

  virtual machine communications interface (VMCI), see zmq_vmci(7)

udp

  unreliable unicast and multicast using UDP, see zmq_udp(7)

Every ØMQ 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).

The ipc, tcp, vmci and udp transports accept wildcard addresses: see zmq_ipc(7), zmq_tcp(7), zmq_vmci(7) and 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). By contrast, following a libzmq:zmq_connect[3], the socket enters the ready state.

## 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

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 ØMQ 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

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

zmq_connect(3) zmq_socket(3) zmq(7)

## AUTHORS

This page was written by the ØMQ community. To make a change please read the ØMQ Contribution Policy at http://www.zeromq.org/docs:contributing.