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()); } }
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 "); } } }
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); }); } } } }
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(); } }
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); } }
public void DisposeImmediately() { using (var server = new DealerSocket()) { server.BindRandomPort("tcp://*"); } }
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()); } }
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()); } }
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()); } } }