Lith 1e54550e25 freestyle optimize 10 months ago
..
Devices 1e54550e25 freestyle optimize 10 months ago
Monitoring 1e54550e25 freestyle optimize 10 months ago
Platform 1e54550e25 freestyle optimize 10 months ago
ZGuideExamples cc8bdd4bfa 4 years ago
.gitignore cc8bdd4bfa 4 years ago
.travis.yml cc8bdd4bfa 4 years ago
AssemblyInfo.cs cc8bdd4bfa 4 years ago
LICENSE.txt cc8bdd4bfa 4 years ago
README.md cc8bdd4bfa 4 years ago
RouterMandatory.cs 1e54550e25 freestyle optimize 10 months ago
TcpKeepaliveBehaviour.cs 1e54550e25 freestyle optimize 10 months ago
Z85.cs 1e54550e25 freestyle optimize 10 months ago
ZActor.cs 1e54550e25 freestyle optimize 10 months ago
ZAuth.cs 1e54550e25 freestyle optimize 10 months ago
ZCert.cs 1e54550e25 freestyle optimize 10 months ago
ZCertStore.cs 1e54550e25 freestyle optimize 10 months ago
ZContext.cs 1e54550e25 freestyle optimize 10 months ago
ZContextOption.cs 1e54550e25 freestyle optimize 10 months ago
ZDevice.cs 1e54550e25 freestyle optimize 10 months ago
ZError.cs 1e54550e25 freestyle optimize 10 months ago
ZException.cs 1e54550e25 freestyle optimize 10 months ago
ZFrame.cs 1e54550e25 freestyle optimize 10 months ago
ZFrameOption.cs 1e54550e25 freestyle optimize 10 months ago
ZMessage.cs 1e54550e25 freestyle optimize 10 months ago
ZPoll.cs 1e54550e25 freestyle optimize 10 months ago
ZPollItem.cs 1e54550e25 freestyle optimize 10 months ago
ZPollItems.Posix.cs 1e54550e25 freestyle optimize 10 months ago
ZPollItems.Win32.cs 1e54550e25 freestyle optimize 10 months ago
ZPollItems.cs 1e54550e25 freestyle optimize 10 months ago
ZSocket.cs 1e54550e25 freestyle optimize 10 months ago
ZSocketFlags.cs 1e54550e25 freestyle optimize 10 months ago
ZSocketOption.cs 1e54550e25 freestyle optimize 10 months ago
ZSocketSetup.cs 1e54550e25 freestyle optimize 10 months ago
ZSocketType.cs 1e54550e25 freestyle optimize 10 months ago
ZSymbol.cs 1e54550e25 freestyle optimize 10 months ago
ZThread.cs 1e54550e25 freestyle optimize 10 months ago
ZeroMQ.7z.Release.cmd cc8bdd4bfa 4 years ago
ZeroMQ.gif cc8bdd4bfa 4 years ago
ZeroMQ.ico cc8bdd4bfa 4 years ago
ZeroMQ.mono.csproj cc8bdd4bfa 4 years ago
ZeroMQ.netcore.csproj 9e15715fca 1 year ago
ZeroMQ.nuspec cc8bdd4bfa 4 years ago
ZeroMQ.snk cc8bdd4bfa 4 years ago
ZeroMQ.targets cc8bdd4bfa 4 years ago
ZeroMQ.vs.csproj cc8bdd4bfa 4 years ago
ZeroMQ.zip.Release.sh cc8bdd4bfa 4 years ago
app.config cc8bdd4bfa 4 years ago
appveyor.yml cc8bdd4bfa 4 years ago
build.sh cc8bdd4bfa 4 years ago
clrzmq4.mono.sln cc8bdd4bfa 4 years ago
clrzmq4.netcore.sln cc8bdd4bfa 4 years ago
clrzmq4.vs.sln cc8bdd4bfa 4 years ago
project.json cc8bdd4bfa 4 years ago
travis.preinstall.sh cc8bdd4bfa 4 years ago

README.md

Build Status Build status

ZeroMQ C# library

clrzmq4 is a .NET wrapper around the native ZeroMQ/libzmq library, and provides the ZeroMQ namespace.

It is written in C# 5.0, and can be opened and built using Visual Studio 2012+ and MonoDevelop 5+.

It is built as AnyCPU to run on .NET Framework 4.0+ and mono 5+, and can currently load native shared libraries for i386 and amd64 on Windows, GNU/Linux and Mac OS X.

The pre-built nuget.org/packages/ZeroMQ/ includes native shared libraries for Windows (libzmq 4.1.n) and GNU/Linux (libzmq 4.1.n), for Windows i386 and linux/MacOSX x86_64 architectures.

You can place any native shared library or dynamic link libraries into a folder ~/Downloads/clrzmq4/amd64 or ~/Downloads/clrzmq4/i386, any libzmq.dll/.so/.dylib 3.x 4.x will work, important is just that the file name is libzmq.dll.

    sudo apt-get install libzmq3-dev

Get it

Open it

  • using MonoDevelop or Visual Studio
  • using Texteditor gedit or GNU emacs

Run it

  • You can't run ZeroMQ/clrzmq4 directly, because this is a library.
  • using mono framework:

    msbuild clrzmq4.mono.sln /p:Configuration=Release
    mono bin/Release/ZGuideExamples.exe Espresso
    
  • using dotnet framwork

    nuget restore clrzmq4.netcore.sln
    dotnet msbuild clrzmq4.netcore.sln
    dotnet run --project ZGuideExamples/ZGuideExamples.netcore.csproj Espresso
    

Read ZeroMQ - The Guide

Ask questions on stackoverflow using tags C# ZeroMQ !

HWClient Example

public static void HWClient(string[] args)
{
	//
	// Hello World client
	//
	// Author: metadings
	//

	// Create
	// using (var context = new ZContext())
	using (var requester = new ZSocket(ZSocketType.REQ))
	{
		// Connect
		requester.Connect("tcp://127.0.0.1:5555");

		for (int n = 0; n < 10; ++n)
		{
			string requestText = "Hello";
			Console.Write("Sending {0}...", requestText);

			// Send
			requester.Send(new ZFrame(requestText));

			// Receive
			using (ZFrame reply = requester.ReceiveFrame())
			{
				Console.WriteLine(" Received: {0} {1}!", requestText, reply.ReadString());
			}
		}
	}
}

HWServer Example

public static void HWServer(string[] args)
{
	//
	// Hello World server
	//
	// Author: metadings
	//

	if (args == null || args.Length < 1)
	{
		Console.WriteLine();
		Console.WriteLine("Usage: ./{0} HWServer [Name]", AppDomain.CurrentDomain.FriendlyName);
		Console.WriteLine();
		Console.WriteLine("    Name   Your name. Default: World");
		Console.WriteLine();
		args = new string[] { "World" };
	}

	string name = args[0];

	// Create
	// using (var context = new ZContext())
	using (var responder = new ZSocket(ZSocketType.REP))
	{
		// Bind
		responder.Bind("tcp://*:5555");

		while (true)
		{
			// Receive
			using (ZFrame request = responder.ReceiveFrame())
			{
				Console.WriteLine("Received {0}", request.ReadString());

				// Do some work
				Thread.Sleep(1);

				// Send
				responder.Send(new ZFrame(name));
			}
		}
	}
}

WUClient Example

public static void WUClient(string[] args)
{
	//
	// Weather update client
	// Connects SUB socket to tcp://localhost:5556
	// Collects weather updates and finds avg temp in zipcode
	//
	// Author: metadings
	//

	if (args == null || args.Length < 2)
	{
		Console.WriteLine();
		Console.WriteLine("Usage: ./{0} WUClient [ZipCode] [Endpoint]", AppDomain.CurrentDomain.FriendlyName);
		Console.WriteLine();
		Console.WriteLine("    ZipCode   The zip code to subscribe. Default is 72622 Nürtingen");
		Console.WriteLine("    Endpoint  Where WUClient should connect to.");
		Console.WriteLine("              Default is tcp://127.0.0.1:5556");
		Console.WriteLine();
		if (args.Length < 1)
			args = new string[] { "72622", "tcp://127.0.0.1:5556" };
		else
			args = new string[] { args[0], "tcp://127.0.0.1:5556" };
	}

	// Socket to talk to server
	// using (var context = new ZContext())
	using (var subscriber = new ZSocket(ZSocketType.SUB))
	{
		string connect_to = args[1];
		Console.WriteLine("I: Connecting to {0}...", connect_to);
		subscriber.Connect(connect_to);

		// Subscribe to zipcode
		string zipCode = args[0];
		Console.WriteLine("I: Subscribing to zip code {0}...", zipCode);
		subscriber.Subscribe(zipCode);

		// Process 10 updates
		int i = 0;
		long total_temperature = 0;
		for (; i < 20; ++i)
		{
			using (var replyFrame = subscriber.ReceiveFrame())
			{
				string reply = replyFrame.ReadString();

				Console.WriteLine(reply);
				total_temperature += Convert.ToInt64(reply.Split(' ')[1]);
			}
		}
		Console.WriteLine("Average temperature for zipcode '{0}' was {1}°", zipCode, (total_temperature / i));
	}
}

WUServer Example

public static void WUServer(string[] args)
{
	//
	// Weather update server
	// Binds PUB socket to tcp://*:5556
	// Publishes random weather updates
	//
	// Author: metadings
	//

	// Prepare our (context and) publisher
	// using (var context = new ZContext())
	using (var publisher = new ZSocket(ZSocketType.PUB))
	{
		string address = "tcp://*:5556";
		Console.WriteLine("I: Publisher.Bind'ing on {0}", address);
		publisher.Bind(address);

		// Initialize random number generator
		var rnd = new Random();

		while (true)
		{
			// Get values that will fool the boss
			int zipcode = rnd.Next(99999);
			int temperature = rnd.Next(-55, +45);

			// Send message to all subscribers
			var update = string.Format("{0:D5} {1}", zipcode, temperature);
			using (var updateFrame = new ZFrame(update))
			{
				publisher.Send(updateFrame);
			}
		}
	}
}

Also look into the WUProxy Example.

Learn more: ZeroMQ - The Guide and the Examples in C#