Czat / Chat w konsoli, Serwer i wielu klientów

0

Dobry wieczór,

Mam do wykonania prosty czat w konsoli z użyciem m.in. Callable, FutureTask, ExecutorService.
Jest jeden serwer i wielu klientów, którzy mogą się doń podłączyć.

Proszę o naprowadzenie w jaki sposób powinienem rozwiązać ten problem.
Wiem, że powinny być 2 wątki, aby wpisywanie na klawiaturze nie blokowało wiadomości przychodzących.

Na razie nie ma sensownego kodu, który mógłbym wrzucić aby pokazać na jakim etapie jestem.
Zupełnie nie wiem jak architektura takiego minigów... powinna wyglądać.

Proszę o konstruktywną krytykę, ale wtedy gdy będzie już co krytykować (kod), a tymczasem jeżeli ktoś uważa, że zjawiam się po gotowca to proszę sobie darować odpowiedź na mój wątek.

0
Future<byte[]> future = executor.submit(new Callable<byte[]>() {
			@Override
			public byte[] call() throws Exception {
				int index = random.nextInt(3);
				String urlText = "http://otile" + (++index) + ".mqcdn.com:" + port + "/tiles/1.0.0/map/" + z + '/' + x + '/' + y + ".png";
				URL url = new URL(urlText);
		        URLConnection yc = url.openConnection();
		        InputStream in = yc.getInputStream();
		        byte[] data = IOUtils.toByteArray(in);
		        in.close();
				return data;	
			}
		
		});
		try {
			return future.get();
		} catch (InterruptedException | ExecutionException e) {
			e.printStackTrace();
			return new byte[0];
		}		

Tutaj masz przykład użycia podanych wyżej klas.
Ogólnie to tak usługę działającą na konsoli synchronizujesz z usługą serwera który znów to obsługuje wszystkich klientów. Ogólnie nie wiem czy robisz to w jednej aplikacji i symulujesz zachowanie klientów czy będziesz testował to na odrębnych aplikacjach klienckich, w tedy też będzie musiało się to trochę różnić w wykonaniu. W sumie jestem ciekaw jak chcesz obsłużyć wejście do konsoli w javie?:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1