SYNOPSIS
TCP is an ubiquitous, reliable, unicast transport. When connecting distributed applications over a network with ØMQ, using the TCP transport will likely be your first choice.
ADDRESSING
A ØMQ 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.
For the TCP transport, the transport is tcp
, and the meaning of the
address part is defined below.
Assigning a local address to a socket
When assigning a local address to a socket using zmq_bind() with the tcp transport, the endpoint shall be interpreted as an interface followed by a colon and the TCP port number to use.
An interface may be specified by either of the following:
-
The wild-card
*
, meaning all available interfaces. -
The primary IPv4 or IPv6 address assigned to the interface, in its numeric representation.
-
The non-portable interface name as defined by the operating system.
The TCP port number may be specified by:
-
A numeric value, usually above 1024 on POSIX systems.
-
The wild-card
*
, meaning a system-assigned ephemeral port.
When using ephemeral ports, the caller should retrieve the actual assigned port using the ZMQ_LAST_ENDPOINT socket option. See zmq_getsockopt(3) for details.
Unbinding wild-card addres from a socket
When wild-card *
endpoint was used in zmq_bind(), the caller should use
real endpoind obtained from the ZMQ_LAST_ENDPOINT socket option to unbind
this endpoint from a socket using zmq_unbind().
Connecting a socket
When connecting a socket to a peer address using zmq_connect() with the tcp transport, the endpoint shall be interpreted as a peer address followed by a colon and the TCP port number to use. You can optionally specify a source_endpoint which will be used as the source address for your connection; tcp://source_endpoint;'endpoint', see the interface description above for details.
A peer address may be specified by either of the following:
-
The DNS name of the peer.
-
The IPv4 or IPv6 address of the peer, in its numeric representation.
Note: A description of the ZeroMQ Message Transport Protocol (ZMTP) which is used by the TCP transport can be found at http://rfc.zeromq.org/spec:15
EXAMPLES
// TCP port 5555 on all available interfaces
rc = zmq_bind(socket, "tcp://*:5555");
assert (rc == 0);
// TCP port 5555 on the local loop-back interface on all platforms
rc = zmq_bind(socket, "tcp://127.0.0.1:5555");
assert (rc == 0);
// TCP port 5555 on the first Ethernet network interface on Linux
rc = zmq_bind(socket, "tcp://eth0:5555");
assert (rc == 0);
// Connecting using an IP address
rc = zmq_connect(socket, "tcp://192.168.1.1:5555");
assert (rc == 0);
// Connecting using a DNS name
rc = zmq_connect(socket, "tcp://server1:5555");
assert (rc == 0);
// Connecting using a DNS name and bind to eth1
rc = zmq_connect(socket, "tcp://eth1:0;server1:5555");
assert (rc == 0);
// Connecting using a IP address and bind to an IP address
rc = zmq_connect(socket, "tcp://192.168.1.17:5555;192.168.1.1:5555");
assert (rc == 0);
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.