Introduction
ZeroMQ is a messaging library, which permits an effortless way of designing a complex communication system. With support of ClrZmq in C# it simplifies Client Server communication which is based on Request/Reply Pattern enabling client to send the request and receive a response from the server. This blog illustrates client server connection and communication using ClrZmq in C#.
Process
The REP (response) socket is the "server" end of a REQ/REP setup (request/response), where you bind the server using a REP socket to an endpoint, either explicitly specified "tcp://127.0.0.1:5555" or using wildcards, e.g. "all interfaces", "tcp://*:5555".
The client would then connect using a REQ socket to an explicit endpoint address, "tcp://127.0.0.1:5555", and no wildcards.
Connection
Every client who needs to communicate with the server must connect to the socket. The Server and clients who participate in communication must connect to the same tcp connection address.
Server
socket.Bind ( "tcp://127.0.0.1:6000" );
Client
socket.Connect ( "tcp://127.0.0.1:6000" );
Any number of clients can get connected to server with socket.Connect () method.
Communication
Now server and clients are ready for the communication with the socket connection between them. Client sends and receives the Acknowledgement through socket as follows,
Output
Output screen grab looks like this with two clients and one server, participating in communication with ZMQ as the main communications layer.
Conclusion
ClrZmq could very well be the new way in how we connect our components. But while dealing with this, one should make sure the firewall is not blocking and see to it that the port is not already in use. For ZeroMq addressing rules, see the zmq_tcp API documentation , and for the socket, see the zmq_socket API documentation .