Example #1
0
 public void DisposeImmediately()
 {
     using (var server = new DealerSocket())
     {
         server.BindRandomPort("tcp://*");
     }
 }
Example #2
0
        public void HasOutTest()
        {
            using (var server = new DealerSocket())
            {
                using (var client = new DealerSocket())
                {
                    var port = server.BindRandomPort("tcp://*");

                    // no client is connected so we don't have out
                    Assert.IsFalse(server.HasOut);

                    Assert.IsFalse(client.HasOut);

                    client.Connect("tcp://localhost:" + port);

                    Thread.Sleep(200);

                    // client is connected so server should have out now, client as well
                    Assert.IsTrue(server.HasOut);
                    Assert.IsTrue(client.HasOut);
                }

                //Thread.Sleep(2000);
                // client is disposed,server shouldn't have out now
                //Assert.IsFalse(server.HasOut);
            }
        }
Example #3
0
        public void BindRandom()
        {
            using (var randomDealer = new DealerSocket())
                using (var connectingDealer = new DealerSocket())
                {
                    int port = randomDealer.BindRandomPort("tcp://*");
                    connectingDealer.Connect("tcp://127.0.0.1:" + port);

                    randomDealer.SendFrame("test");

                    Assert.AreEqual("test", connectingDealer.ReceiveFrameString());
                }
        }
Example #4
0
        public void Disconnect(string protocol)
        {
            using (var server1 = new DealerSocket())
                using (var server2 = new DealerSocket())
                    using (var client = new DealerSocket())
                    {
                        string address2;

                        if (protocol == "tcp")
                        {
                            var port1 = server1.BindRandomPort("tcp://localhost");
                            var port2 = server2.BindRandomPort("tcp://localhost");

                            client.Connect("tcp://localhost:" + port1);
                            client.Connect("tcp://localhost:" + port2);

                            address2 = "tcp://localhost:" + port2;
                        }
                        else
                        {
                            server1.Bind("inproc://localhost1");
                            server2.Bind("inproc://localhost2");

                            client.Connect("inproc://localhost1");
                            client.Connect("inproc://localhost2");

                            address2 = "inproc://localhost2";
                        }

                        Thread.Sleep(100);

                        // we should be connected to both server
                        client.SendFrame("1");
                        client.SendFrame("2");

                        // make sure client is connected to both servers
                        server1.SkipFrame();
                        server2.SkipFrame();

                        // disconnect from server2, server 1 should receive all messages
                        client.Disconnect(address2);
                        Thread.Sleep(100);

                        client.SendFrame("1");
                        client.SendFrame("2");

                        server1.SkipFrame();
                        server1.SkipFrame();
                    }
        }
Example #5
0
        public void Ipv6ToIpv4()
        {
            using (var localDealer = new DealerSocket())
                using (NetMQSocket connectingDealer = new DealerSocket())
                {
                    localDealer.Options.IPv4Only = false;
                    var port = localDealer.BindRandomPort("tcp://*");

                    connectingDealer.Connect($"tcp://{IPAddress.Loopback}:{port}");

                    connectingDealer.SendFrame("test");

                    Assert.AreEqual("test", localDealer.ReceiveFrameString());
                }
        }
Example #6
0
        public void Ipv6ToIpv6()
        {
            using (var localDealer = new DealerSocket())
                using (var connectingDealer = new DealerSocket())
                {
                    localDealer.Options.IPv4Only = false;
                    var port = localDealer.BindRandomPort("tcp://*");

                    connectingDealer.Options.IPv4Only = false;
                    connectingDealer.Connect(string.Format("tcp://{0}:{1}", IPAddress.IPv6Loopback, port));

                    connectingDealer.SendFrame("test");

                    Assert.AreEqual("test", localDealer.ReceiveFrameString());
                }
        }
Example #7
0
        public void BindToLocal()
        {
            var validAliasesForLocalHost = new[] { "127.0.0.1", "localhost", Dns.GetHostName() };

            foreach (var alias in validAliasesForLocalHost)
            {
                using (var localDealer = new DealerSocket())
                    using (var connectingDealer = new DealerSocket())
                    {
                        var port = localDealer.BindRandomPort("tcp://*");
                        connectingDealer.Connect($"tcp://{alias}:{port}");

                        localDealer.SendFrame("test");

                        Assert.AreEqual("test", connectingDealer.ReceiveFrameString());
                    }
            }
        }
Example #8
0
        public void BindToLocal()
        {
            var validAliasesForLocalHost = new[] { "127.0.0.1", "localhost", Dns.GetHostName() };

            foreach (var alias in validAliasesForLocalHost)
            {
                using (var localDealer = new DealerSocket())
                    using (var connectingDealer = new DealerSocket())
                    {
                        var port = localDealer.BindRandomPort("tcp://*");
                        connectingDealer.Connect(string.Format("tcp://{0}:{1}", alias, port));

                        localDealer.SendFrame("test");

                        Assert.AreEqual("test", connectingDealer.ReceiveFrameString());
                        Console.WriteLine(alias + " connected ");
                    }
            }
        }
Example #9
0
        public void Unbind(string protocol)
        {
            using (var server = new DealerSocket())
            {
                string address1, address2;

                // just making sure can bind on both addresses
                using (var client1 = new DealerSocket())
                    using (var client2 = new DealerSocket())
                    {
                        if (protocol == "tcp")
                        {
                            var port1 = server.BindRandomPort("tcp://localhost");
                            var port2 = server.BindRandomPort("tcp://localhost");

                            address1 = "tcp://localhost:" + port1;
                            address2 = "tcp://localhost:" + port2;

                            client1.Connect(address1);
                            client2.Connect(address2);
                        }
                        else
                        {
                            Debug.Assert(protocol == "inproc");

                            address1 = "inproc://localhost1";
                            address2 = "inproc://localhost2";

                            server.Bind(address1);
                            server.Bind(address2);

                            client1.Connect(address1);
                            client2.Connect(address2);
                        }

                        Thread.Sleep(100);

                        // we should be connected to both server
                        client1.SendFrame("1");
                        client2.SendFrame("2");

                        // the server receive from both
                        server.SkipFrame();
                        server.SkipFrame();
                    }

                // unbind second address
                server.Unbind(address2);
                Thread.Sleep(100);

                using (var client1 = new DealerSocket())
                    using (var client2 = new DealerSocket())
                    {
                        client1.Options.DelayAttachOnConnect = true;
                        client1.Connect(address1);

                        client2.Options.DelayAttachOnConnect = true;

                        if (protocol == "tcp")
                        {
                            client2.Connect(address2);

                            client1.SendFrame("1");
                            server.SkipFrame();

                            Assert.IsFalse(client2.TrySendFrame(TimeSpan.FromSeconds(2), "2"));
                        }
                        else
                        {
                            Assert.Throws <EndpointNotFoundException>(() => { client2.Connect(address2); });
                        }
                    }
            }
        }