[ KodarMAX @ 29.10.2009. 13:37 ] @
Napravio sam klijent-server aplikaciju i potrebno je da sa servera prekinem komunikaciju sa određenim klijentom. U nastavku je dat uprošćen kod na serveru: Code: public class Server extends Thread { ServerSocket serverSoket; Socket soket; NitKlijenta[] klijenti; int brojKlijenata; public void run() { klijenti = new NitKlijenta[5]; brojKlijenata = 0; try { serverSoket = new ServerSocket(8189); while (true) { soket = serverSoket.accept(); klijenti[brojKlijenata] = new NitKlijenta(soket, this, brojKlijenata); klijenti[brojKlijenata].start(); brojKlijenata++; } } catch (IOException ex) { ex.printStackTrace(); } catch(ArrayIndexOutOfBoundsException ex){ ex.printStackTrace(); } } } public class NitKlijenta extends Thread { Socket soket; Server server; int brojKlijenata; ObjectInputStream inObj; public NitKlijenta(Socket soket, Server server, int brojKlijenata) { this.soket = soket; this.server = server; this.brojKlijenata = brojKlijenata; } public void run() { try { while (true) { inObj = new ObjectInputStream(soket.getInputStream()); TransferObject to = new TransferObject(); to = (TransferObject) inObj.readObject(); server.procesiraj(to); } } catch (ClassNotFoundException ex) { ex.printStackTrace(); } catch (IOException ex) { server.brojKlijenata--; return; } } } NitKlijent, kada počne sa izvršavanjem, zaustavi se na sledećoj liniji koda: Code: inObj = new ObjectInputStream(soket.getInputStream()); Tu čeka objekat sa klijenta. Pitanje je sledeće: Da li je moguće prekinuti jednu od niti (iako je u while petlji i ceka na klijent) na zahtev servera i kako? Koliko ja znam, potrebno je da nit završi run() metodu da bi se prekinula. Da li je moguće prekinuti i ako nije završila run() metodu? Unapred hvala! |