ZMQ_TCP - Online Linux Manual PageSection : 7
Updated : 01/21/2023
Source : 0MQ 4​.3​.4
Note : 0MQ Manual

NAMEzmq_tcp − 0MQ unicast transport using TCP

SYNOPSISTCP is an ubiquitous, reliable, unicast transport​. When connecting distributed applications over a network with 0MQ, using the TCP transport will likely be your first choice​.

ADDRESSINGA 0MQ 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 socketWhen 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 address from a socketWhen wild−card * endpoint was used in zmq_bind(), the caller should use real endpoint obtained from the ZMQ_LAST_ENDPOINT socket option to unbind this endpoint from a socket using zmq_unbind()​.

Connecting a socketWhen 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

HWMFor the TCP transport, the high water mark (HWM) mechanism works in conjunction with the TCP socket buffers handled at OS level​. Depending on the OS and several other factors the size of such TCP buffers will be different​. Moreover TCP buffers provided by the OS will accomodate a varying number of messages depending on the size of messages (unlike ZMQ HWM settings the TCP socket buffers are measured in bytes and not messages)​. This may result in apparently inexplicable behaviors: e​.g​., you may expect that setting ZMQ_SNDHWM to 100 on a socket using TCP transport will have the effect of blocking the transmission of the 101−th message if the receiver is slow​. This is very unlikely when using TCP transport since OS TCP buffers will typically provide enough buffering to allow you sending much more than 100 messages​. Of course if the receiver is slow, transmitting on a TCP ZMQ socket will eventually trigger the "mute state" of the socket; simply dont rely on the exact HWM value​. Obviously the same considerations apply for the receive HWM (see ZMQ_RCVHWM)​.

EXAMPLESAssigning a local address to a socket. // 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 a socket. // 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);

SEE ALSOzmq_bind(3) zmq_connect(3) zmq_pgm(7) zmq_ipc(7) zmq_inproc(7) zmq_vmci(7) zmq(7)

AUTHORSThis page was written by the 0MQ community​. To make a change please read the 0MQ Contribution Policy at http://www​.zeromq​.org/docs:contributing​.
0
Johanes Gumabo
Data Size   :   16,889 byte
man-zmq_tcp.7Build   :   2024-12-05, 20:55   :  
Visitor Screen   :   x
Visitor Counter ( page / site )   :   2 / 201,626
Visitor ID   :     :  
Visitor IP   :   3.133.141.201   :  
Visitor Provider   :   AMAZON-02   :  
Provider Position ( lat x lon )   :   39.962500 x -83.006100   :   x
Provider Accuracy Radius ( km )   :   1000   :  
Provider City   :   Columbus   :  
Provider Province   :   Ohio ,   :   ,
Provider Country   :   United States   :  
Provider Continent   :   North America   :  
Visitor Recorder   :   Version   :  
Visitor Recorder   :   Library   :  
Online Linux Manual Page   :   Version   :   Online Linux Manual Page - Fedora.40 - march=x86-64 - mtune=generic - 24.12.05
Online Linux Manual Page   :   Library   :   lib_c - 24.10.03 - march=x86-64 - mtune=generic - Fedora.40
Online Linux Manual Page   :   Library   :   lib_m - 24.10.03 - march=x86-64 - mtune=generic - Fedora.40
Data Base   :   Version   :   Online Linux Manual Page Database - 24.04.13 - march=x86-64 - mtune=generic - fedora-38
Data Base   :   Library   :   lib_c - 23.02.07 - march=x86-64 - mtune=generic - fedora.36

Very long time ago, I have the best tutor, Wenzel Svojanovsky . If someone knows the email address of Wenzel Svojanovsky , please send an email to johanes_gumabo@yahoo.co.id .
If error, please print screen and send to johanes_gumabo@yahoo.co.id
Under development. Support me via PayPal.