C# ØMQ Server Client Example, C# ZeroMQ Sender Receiver Pair

C# ØMQ Server Client Example, C# ZeroMQ Sender Receiver Pair

First, download source files from ZeroMq .Net Download Page and build the project in src\ZeroMQ for Windows to produce required library and dll files. Then:

1. Open a new project.

2. Add clrzmq.dll you produce to your project references.

3. Copy libzmq.dll to your build directory.

4. Build and run your first .NET ØMQ applications.

C# ØMQ Receiver Code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ZeroMQ;

namespace ZeroMqNetReceiver
{
    class Receiver
    {
        static void Main(string[] args)
        {
            using (var context = ZmqContext.Create())
            using (var socket =
                        context.CreateSocket(SocketType.PAIR))
            {
                socket.Bind("tcp://*:5555");

                Console.WriteLine("NET Receiver: Started");

                while (true)
                {
                    Frame request = socket.ReceiveFrame();
                    String message = Encoding.UTF8.GetString(request);
                    Console.WriteLine("NET Receiver: Received (" + message + ")");
                }
            }
        }
    }
}

C# ØMQ Sender Code

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using ZeroMQ;

namespace ZeroMqNetSender
{
    class Sender
    {
        static void Main(string[] args)
        {
            using (var context = ZmqContext.Create())
            using (var socket = context.CreateSocket(SocketType.PAIR))
            {
                socket.Connect("tcp://localhost:5555");

                Console.WriteLine("NET Sender: Started");

                for (int i = 0; i < 10; ++i )
                {
                    Thread.Sleep(1000);

                    String message = "NET Message " + (i + 1);
                    Console.WriteLine("NET Sender: Sending (" + message + ")");
                    socket.SendFrame(new Frame(Encoding.UTF8.GetBytes(message)));
                }
            }
        }
    }
}

Download .NET ZeroMQ Sender and Receiver and try running the application for windows operating systems.

C# ØMQ Server Client Example for Debian or Ubuntu

1. Install NetMQ

Using .NET CLI:

dotnet add package NetMQ

2. Server (Reply / REP)

// Server.cs
using System;
using NetMQ;
using NetMQ.Sockets;

class Server
{
    static void Main()
    {
        using (var server = new ResponseSocket("@tcp://*:5555"))
        {
            Console.WriteLine("Server listening on port 5555...");

            while (true)
            {
                // Wait for request
                string message = server.ReceiveFrameString();
                Console.WriteLine("Received: " + message);

                // Send reply
                server.SendFrame("Hello from server");
            }
        }
    }
}

3. Client (Request / REQ)

// Client.cs
using System;
using NetMQ;
using NetMQ.Sockets;

class Client
{
    static void Main()
    {
        using (var client = new RequestSocket(">tcp://localhost:5555"))
        {
            Console.WriteLine("Connecting to server...");

            // Send request
            client.SendFrame("Hello from client");

            // Receive reply
            string reply = client.ReceiveFrameString();
            Console.WriteLine("Received reply: " + reply);
        }
    }
}

4. Run

Compile and run them separately:

dotnet run --project Server
dotnet run --project Client

How it works

• ResponseSocket = server (REP)
• RequestSocket = client (REQ)
• Same strict pattern as core ZeroMQ:
• Client sends request
• Server receives
• Server replies
• Client receives

Contents related to 'C# ØMQ Server Client Example, C# ZeroMQ Sender Receiver Pair'

C/C++ ØMQ Server Client Example, ZeroMQ Sender Receiver Pair
C/C++ ØMQ Server Client Example, ZeroMQ Sender Receiver Pair
Coordinating C/C++ ØMQ and .NET ØMQ
Coordinating C/C++ ØMQ and .NET ØMQ