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

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#