public void testMultipleThreads () throws IOException {
		final Server server1 = new Server(16384, 8192);
		server1.getKryo().register(String[].class);
		startEndPoint(server1);
		server1.bind(tcpPort, udpPort);
		server1.addListener(new Listener() {
			public void received (Connection connection, Object object) {
				if (object instanceof String) {
					if (!object.equals("client1")) fail();
					if (received.incrementAndGet() == 2) stopEndPoints();
				}
			}
		});

		final Server server2 = new Server(16384, 8192);
		server2.getKryo().register(String[].class);
		startEndPoint(server2);
		server2.bind(tcpPort + 1, udpPort + 1);
		server2.addListener(new Listener() {
			public void received (Connection connection, Object object) {
				if (object instanceof String) {
					if (!object.equals("client2")) fail();
					if (received.incrementAndGet() == 2) stopEndPoints();
				}
			}
		});

		// ----

		Client client1 = new Client(16384, 8192);
		client1.getKryo().register(String[].class);
		startEndPoint(client1);
		client1.addListener(new Listener() {
			public void connected (Connection connection) {
				connection.sendTCP("client1");
			}
		});
		client1.connect(5000, host, tcpPort, udpPort);

		Client client2 = new Client(16384, 8192);
		client2.getKryo().register(String[].class);
		startEndPoint(client2);
		client2.addListener(new Listener() {
			public void connected (Connection connection) {
				connection.sendTCP("client2");
			}
		});
		client2.connect(5000, host, tcpPort + 1, udpPort + 1);

		waitForThreads(5000);
	}