Example #1
0
		static void Main(string[] args)
		{
			var isMono = (Type.GetType("Mono.Runtime", false) != null);
			Console.WriteLine("Is Mono? " + isMono);


			using (var ctx = new Context())
			{
				// Create req/rep vanilla in tcp
				var req = ctx.Req();
				var reply = ctx.Rep();
				req.SetOption(SocketOpt.RCVTIMEO, 3000);

				reply.Bind("tcp://0.0.0.0:9000");
				req.Connect("tcp://127.0.0.1:9000");
				req.Send("A cup of coffee please");

				var reqStr = reply.RecvString();
				Console.WriteLine(reqStr);
				reply.Send("Here's your coffee sir");
				var replyStr = req.RecvString();
				Console.WriteLine(replyStr);
				req.Dispose();
				reply.Dispose();


				// Polling

				reply = ctx.Rep();
				reply.Bind("tcp://0.0.0.0:9001");
				var polling = new Polling(PollingEvents.RecvReady, reply);
				polling.RecvReady += socket =>
				{
					reqStr = reply.RecvString();
					reply.Send("Here's another cup of coffee sir");
				};

				req = ctx.Req();
				req.Connect("tcp://127.0.0.1:9001");
				req.Send("Another cup of coffee please");

				polling.PollForever();

				replyStr = req.RecvString();
				Console.WriteLine(replyStr);
				req.Dispose();
				reply.Dispose();


				// Pub sub


				// Devices


			}


		}
Example #2
0
		static void Main(string[] args)
		{
			using (var ctx = new Context())
			{
				const string MsgReq = "function shall retrieve the value for the option specified by the option_name argument for the ØMQ socket pointed to by the socket argument, and store it in the buffer pointed to by the option_value argument";
				const string MsgReply = "The option_len argument is the size in bytes of the buffer pointed to by option_value; upon successful completion zmq_getsockopt() shall modify the option_len argument to indicate the actual size of the option value stored in the buffer";

				ulong counter = 0;

				using (var repSocket = ctx.CreateSocket(SocketType.Rep))
				{
					repSocket.SetOption(SocketOpt.LINGER, false);
					repSocket.Bind("tcp://0.0.0.0:8801");

					while (true)
					{
						counter++;

						if (counter % 1000 == 0)
						{
							var collCount0 = GC.CollectionCount(0);
							var collCount1 = GC.CollectionCount(1);
							var collCount2 = GC.CollectionCount(2);
						
							Console.WriteLine("Collections on Gen 0 {0}, Gen 1 {1}, Gen 2 {2} ", collCount0, collCount1, collCount2);
						}

						using (var reqSocket = ctx.CreateSocket(SocketType.Req))
						{
							reqSocket.SetOption(SocketOpt.LINGER, false);

							reqSocket.Connect("tcp://127.0.0.1:8801");

							reqSocket.Send(MsgReq);

							var msg = repSocket.Recv();
							var msgStr = Encoding.UTF8.GetString(msg);

							if (MsgReq != msgStr) throw new Exception("MsgReq is different from expected: " + msgStr);

							repSocket.Send(MsgReply);

							msg = reqSocket.Recv();
							msgStr = Encoding.UTF8.GetString(msg);

							if (MsgReply != msgStr) throw new Exception("MsgReply is different from expected: " + msgStr);
						}
					}
				}
			}
		}
Example #3
0
        static void Main(string[] args)
        {
            if (args.Length != 3)
            {
                Console.WriteLine("usage: local_thr <bind-to> <message-size> <message-count>");
                Environment.Exit(1);
            }

            var bindTo = args[0];
            var messageSize = int.Parse(args[1]);
            var messageCount = int.Parse(args[2]);

            TimeSpan elapsed;
            using (var ctx = new Context())
            using (var s = ctx.CreateSocket(SocketType.Pull))
            {
                s.Bind(bindTo);

                var msg = s.Recv();

                if (msg.Length != messageSize)
                {
                    Console.WriteLine("message of incorrect size received");
                    Environment.Exit(-1);
                }

                var sw = new Stopwatch();

                sw.Start();
                for (int i = 0; i < messageCount - 1; i++)
                {
                    msg = s.Recv();
                    if (msg.Length != messageSize)
                    {
                        Console.WriteLine("message of incorrect size received");
                        Environment.Exit(-1);
                    }
                }
                sw.Stop();

                elapsed = sw.Elapsed;
            }

            double throughput = messageCount / elapsed.TotalSeconds;
            double megabits = (throughput * messageSize * 8) / (1000000);

            Console.WriteLine("message size: {0} B", messageSize);
            Console.WriteLine("message count: {0}", messageCount);
            Console.WriteLine("mean throughput: {0:0} [msg/s]", throughput);
            Console.WriteLine("mean throughput: {0:0.000} [Mb/s]", megabits);
        }
Example #4
0
        static void Main(string[] args)
        {
            if (args.Length != 3)
            {
                Console.WriteLine("usage: remote_thr <connect-to> <message-size> <message-count>");
                Environment.Exit(1);
            }

            var connectTo = args[0];
            var messageSize = int.Parse(args[1]);
            var messageCount = int.Parse(args[2]);

            using (var ctx = new Context())
            using (var s = ctx.CreateSocket(SocketType.Push))
            {
                s.Connect(connectTo);

                var msg = new byte[messageSize];
                for (int i = 0; i < messageCount; i++)
                {
                    s.Send(msg);
                }
            }
        }