NAME

zmq_connect_peer - create outgoing connection from socket and return the connection routing id in thread-safe and atomic way.

SYNOPSIS

uint32_t zmq_connect_peer (void '*socket', const char '*endpoint');

DESCRIPTION

The zmq_connect_peer() function connects a 'ZMQ_PEER' socket to an 'endpoint' and then returns the endpoint 'routing_id'.

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.

The function is supported only on the 'ZMQ_PEER' socket type and would return 0 with 'errno' set to 'ENOTSUP' otherwise.

The zmq_connect_peer() support the following transports:

'tcp'

unicast transport using TCP, see zmq_tcp

'ipc'

local inter-process communication transport, see zmq_ipc

'inproc'

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

'ws'

unicast transport using WebSockets, see zmq_ws

'wss'

unicast transport using WebSockets over TLS, see zmq_wss

RETURN VALUE

The zmq_connect_peer() function returns the peer 'routing_id' if successful. Otherwise it returns 0 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 with 'ZMQ_PEER'.

ENOCOMPATPROTO

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

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.

ENOTSUP

The socket is not of type 'ZMQ_PEER'.

EFAULT

The 'ZMQ_IMMEDIATE' option is set on the socket.

EXAMPLE

Connecting a peer socket to a TCP transport and sending a message
/* Create a ZMQ_SUB socket */
void *socket = zmq_socket (context, ZMQ_PEER);
assert (socket);
/* Connect it to the host server001, port 5555 using a TCP transport */
uint32_t routing_id = zmq_connect (socket, "tcp://server001:5555");
assert (routing_id == 0);
/* Sending a message to the peer  */
zmq_msg_t msg;
int rc = zmq_msg_init_data (&msg, "HELLO", 5, NULL, NULL);
assert (rc == 0);
rc = zmq_msg_set_routing_id (&msg, routing_id);
assert (rc == 0);
rc = zmq_msg_send (&msg, socket, 0);
assert (rc == 5);
rc = zmq_msg_close (&msg);
assert (rc == 0);

SEE ALSO

AUTHORS

This page was written by the 0MQ community. To make a change please read the 0MQ Contribution Policy at https://zeromq.org/how-to-contribute/.