The zmq_connect() function connects the socket to an 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 connect to.
0MQ 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 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).
Note
for most transports and socket types the connection is not performed immediately but as needed by
0MQ. Thus a successful call to zmq_connect() does not mean that the connection was or could actually
be established. Because of this, for most transports and socket types the order in which a server
socket is bound and a client socket is connected to it does not matter. The ZMQ_PAIR and ZMQ_CHANNEL
sockets are an exception, as they do not automatically reconnect to endpoints.
Note
following a zmq_connect(), for socket types except for ZMQ_ROUTER, the socket enters its normal ready
state. By contrast, following a zmq_bind() alone, the socket enters a mute state in which the socket
blocks or drops messages according to the socket type, as defined in zmq_socket(3). A ZMQ_ROUTER
socket enters its normal ready state for a specific peer only when handshaking is complete for that
peer, which may take an arbitrary time.
Note
for some socket types, multiple connections to the same endpoint donβt really make sense (see
https://github.com/zeromq/libzmq/issues/788). For those socket types, any attempt to connect to an
already connected endpoint is silently ignored (i.e., returns zero). This behavior applies to
ZMQ_DEALER, ZMQ_SUB, ZMQ_PUB, and ZMQ_REQ socket types.