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