Moja aplikacja składa się z serwera i klienta. Serwer obsługuje wielu klientów. Kiedy jakiś klient wyśle string do serwera, to serwer odsyła ten string do pozostałych klientów (oprócz tego klienta który nadesłał wiadomość).
Wszystko działa w porządku dopóki nie dochodzi do kwestii rozłączenia serwera i klienta. Klienta mam w osobnym oknie, i jak zamykam okno klienta krzyżykiem, serwer wyłapuje SocketException i wszystko gra. Ale mam problem z kontrolowanym rozłączeniem klienta.
Client.java
(...)
public void closeConnection()
{
isConnected = false;
}
@Override
public void run()
{
try
{
while(isConnected)
{
String odp;
if(isConnected == true)
{
odp = in.readLine();
interf.jTextArea2.append(odp+"\n");
}
Thread.sleep(200);
}
System.out.println("Rozłączam...");
in.close();
out.close();
klient.close();
}
catch (InterruptedException ex)
{
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
}
catch (IOException ex)
{
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
}
}
Gdy nacisnę przycisk "Rozłącz" wywołuję metodę closeConnection(). Jednak to w ogóle nie działa... Serwer nadal odbiera komunikaty od klienta jakby nic się nie stało :/ Chyba trzeba zacząć w ogóle od tego że mi się nie kończy pętla w run() ...
Mógłby ktoś pomóc? Dziękuję z góry :)</email>