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

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#