public void TcpServerMulticastTest() { string address = "127.0.0.1"; int port = 1112; // Create and start Echo server var server = new EchoTcpServer(IPAddress.Any, port); Assert.True(server.Start()); while (!server.IsStarted) { Thread.Yield(); } // Create and connect Echo client var client1 = new EchoTcpClient(address, port); Assert.True(client1.ConnectAsync()); while (!client1.IsConnected || (server.Clients != 1)) { Thread.Yield(); } // Multicast some data to all clients server.Multicast("test"); // Wait for all data processed... while (client1.BytesReceived != 4) { Thread.Yield(); } // Create and connect Echo client var client2 = new EchoTcpClient(address, port); Assert.True(client2.ConnectAsync()); while (!client2.IsConnected || (server.Clients != 2)) { Thread.Yield(); } // Multicast some data to all clients server.Multicast("test"); // Wait for all data processed... while ((client1.BytesReceived != 8) || (client2.BytesReceived != 4)) { Thread.Yield(); } // Create and connect Echo client var client3 = new EchoTcpClient(address, port); Assert.True(client3.ConnectAsync()); while (!client3.IsConnected || (server.Clients != 3)) { Thread.Yield(); } // Multicast some data to all clients server.Multicast("test"); // Wait for all data processed... while ((client1.BytesReceived != 12) || (client2.BytesReceived != 8) || (client3.BytesReceived != 4)) { Thread.Yield(); } // Disconnect the Echo client Assert.True(client1.DisconnectAsync()); while (client1.IsConnected || (server.Clients != 2)) { Thread.Yield(); } // Multicast some data to all clients server.Multicast("test"); // Wait for all data processed... while ((client1.BytesReceived != 12) || (client2.BytesReceived != 12) || (client3.BytesReceived != 8)) { Thread.Yield(); } // Disconnect the Echo client Assert.True(client2.DisconnectAsync()); while (client2.IsConnected || (server.Clients != 1)) { Thread.Yield(); } // Multicast some data to all clients server.Multicast("test"); // Wait for all data processed... while ((client1.BytesReceived != 12) || (client2.BytesReceived != 12) || (client3.BytesReceived != 12)) { Thread.Yield(); } // Disconnect the Echo client Assert.True(client3.DisconnectAsync()); while (client3.IsConnected || (server.Clients != 0)) { Thread.Yield(); } // Stop the Echo server Assert.True(server.Stop()); while (server.IsStarted) { Thread.Yield(); } // Check the Echo server state Assert.True(server.Started); Assert.True(server.Stopped); Assert.True(server.Connected); Assert.True(server.Disconnected); Assert.True(server.BytesSent == 36); Assert.True(server.BytesReceived == 0); Assert.True(!server.Errors); // Check the Echo client state Assert.True(client1.BytesSent == 0); Assert.True(client2.BytesSent == 0); Assert.True(client3.BytesSent == 0); Assert.True(client1.BytesReceived == 12); Assert.True(client2.BytesReceived == 12); Assert.True(client3.BytesReceived == 12); Assert.True(!client1.Errors); Assert.True(!client2.Errors); Assert.True(!client3.Errors); }
public void TcpServerTest() { string address = "127.0.0.1"; int port = 1111; // Create and start Echo server var server = new EchoTcpServer(IPAddress.Any, port); Assert.True(server.Start()); while (!server.IsStarted) { Thread.Yield(); } // Create and connect Echo client var client = new EchoTcpClient(address, port); Assert.True(client.ConnectAsync()); while (!client.IsConnected || (server.Clients != 1)) { Thread.Yield(); } // Send a message to the Echo server client.SendAsync("test"); // Wait for all data processed... while (client.BytesReceived != 4) { Thread.Yield(); } // Disconnect the Echo client Assert.True(client.DisconnectAsync()); while (client.IsConnected || (server.Clients != 0)) { Thread.Yield(); } // Stop the Echo server Assert.True(server.Stop()); while (server.IsStarted) { Thread.Yield(); } // Check the Echo server state Assert.True(server.Started); Assert.True(server.Stopped); Assert.True(server.Connected); Assert.True(server.Disconnected); Assert.True(server.BytesSent == 4); Assert.True(server.BytesReceived == 4); Assert.True(!server.Errors); // Check the Echo client state Assert.True(client.Connected); Assert.True(client.Disconnected); Assert.True(client.BytesSent == 4); Assert.True(client.BytesReceived == 4); Assert.True(!client.Errors); }