Nie widze kodu, nawet patrząc logicznie- nie widzę tutaj KLIENT_SERVER, w ogóle nie widzę samego klienta i jego istoty.
Flaga "nasluch", nigdzie nie jest zmieniana, więc aktywny proces serwera jest non stop OPEN, porty pewnie są w użyciu i tak naprawdę proces samego servera nie jest zamykany, zamknięcie - aplikacji ni zamknie serwera, ergo nie zawsze tak jest szczególnie w odniesieniu portu i korzystania z IDE- które inteligentnie przechowa Ci to w cache
try{
System.out.println("Zamykam");
serverSocket.close();
}catch (IOException err){
err.printStackTrace();
}
troszeczke ryzykowne wywołanie w pętli, generalnie w której flaga nie jest zmieniana.
Flaga jest boolean nasluch = true; zmienną lokalną więc każdy egzemplarz klasy ma własny serwer na tym samym porcie z niekończącą się pętlą
Delegacja -> do innego wątku samego serwera, nie powoduje jego zamknięcia - mimo, że SocketServer to klasa.
Każdy otwarty klient serwera powinien być zamykany ręcznie,
Każdy klient będzie blokowany zanim poprzedni klient nie zostanie zamknięty, lub jeśli będziesz go zamykał.
Jeśli zamkniesz klienta, serwer się nie zamyka, jeśli zamkniesz server klient niekoniecznie się zamknie, to tak samo jak Otwarcie dostępu do bazy przez Connection, z użyciem np ResultSet itp, zamknięcie Connection, nie powoduje że zasób RESULT_SET zostanie zamknięty.