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

Czat / Chat w konsoli, Serwer i wielu klientów
LT
  • Rejestracja:prawie 11 lat
  • Ostatnio:około 9 lat
  • Postów:5
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.

RA
  • Rejestracja:około 11 lat
  • Ostatnio:8 miesięcy
  • Postów:93
0
Kopiuj
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?:)

LT
Dzięki. Sprawa rozwiązana ;) Co prawda nie zrobiłem tego dobrze, ale działało.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.