Olá amigos.
Tenho o seguinte código:
public class TesteConexao {
// Thread que recebe a conexão
private class Servidor extends Thread{
private ServerSocket sSocket;
private Socket socket;
public void run(){
try{
sSocket = new ServerSocket(1234);
socket = sSocket.accept();
System.out.println(socket.getInetAddress().getHostName() + " conectado!");
while(socket.isConnected()){ // espera o usuário desconectar
sleep(1000);
System.out.println("Servidor esperando...");
}
System.out.println(socket.getInetAddress().getHostName() + " desconectou!");
} catch(Exception e){
e.printStackTrace();
}
}
}
// Thread que solicita a conexão
private class Cliente extends Thread{
private Socket socket;
public void run(){
try {
socket = new Socket("localhost", 1234);
sleep((int)(Math.random() * 10000));
System.out.println("Cliente desconectando...");
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public TesteConexao() {
new Servidor().start();
new Cliente().start();
}
public static void main(String args[]){
new TesteConexao();
}
}
Porém, após o Cliente executar o socket.close(), o servidor continua executando o laço.
Alguém saberia me dizer o que está errado?
Obrigado!