Amigos
este é um SW servidor que recebe conexões por socket, a cada novo cliente ele cria uma Thread.
import java.io.*;
import java.net.*;
class ClientWorker implements Runnable { // a classe implementa runnable
private Socket client;
int count = 0;
ClientWorker(Socket client) {
this.client = client;
System.out.println("INICIANDO SOCKET SERVER");
}
public void run(){ // segmento a ser exexutado
String line;
BufferedReader in = null;
PrintWriter out = null;
count ++;
System.out.println(" Criado Thread : " + count);
try{
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
out = new PrintWriter(client.getOutputStream(), true);
} catch (IOException e) {
System.out.println("in or out failed");
System.exit(-1);
}
while(true){
try{
line = in.readLine();
//Send data back to client
if(line.equals(">>CLIENT TERMINATE")){
out.println("sessão terminada");
System.out.println("sessão terminada");
}
if(line.equals("cliente1")){
out.println("****" + line);
}
if(line.equals("cliente2")){
out.println("#####" + line);
}
System.out.println(line);
} catch (IOException e) {
System.out.println("Read failed");
//System.exit(-1);
}
}
}
}
//} //fim do metodo run
class SocketThrdServer { // classe interna
ServerSocket server = null;
SocketThrdServer(){ //Begin Constructor
} //End Constructor
public void listenSocket(){
try{
server = new ServerSocket(4444);
} catch (IOException e) {
System.out.println("Could not listen on port 4444");
System.exit(-1);
}
while(true){
ClientWorker w;
try{
w = new ClientWorker(server.accept()); // a cada solicitação de sockts
Thread t = new Thread(w); // cria uma nova instancia de Client Worker
t.start();
} catch (IOException e) {
System.out.println("Accept failed: 4444");
System.exit(-1);
}
}
}
@Override
protected void finalize(){
//Objects created in run method are finalized when
//program terminates and thread exits
try{
server.close();
System.out.println("socket fechado");
} catch (IOException e) {
System.out.println("Could not close socket");
System.exit(-1);
}
}
public static void main(String[] args){
SocketThrdServer frame = new SocketThrdServer();
frame.listenSocket();
}
}
meu problema é que eu quero que quando ocorrer esta exceção(linhas 45,46) ele finalize a Thread onde a mesma ocorreu.
} catch (IOException e) {
System.out.println("Read failed");
como fazer ??
sds
j.silvestre