Tenho a seguinte estrutura
private Socket sockCliente;
private DataInputStream entrada;
private DataOutputStream saida;
private void conectar() throws Exception{
if(sockCliente==null || sockCliente.isClosed()){
sockCliente = new Socket(VariaveisGlobais.IP_SERVIDOR_C, VariaveisGlobais.PORTA_SERVIDOR_C);
entrada = new DataInputStream(sockCliente.getInputStream());
saida = new DataOutputStream(sockCliente.getOutputStream());
System.out.println("Reconectou servidor C");
}else{
System.out.println("Já conectado servidor C!");
}
}
private void fecharConexao(){
try{
entrada.close();
saida.close();
sockCliente.close();
}catch(Exception e){}
}
private void enviaMensagemServidorC(String mensagem) throws Exception{
saida.writeUTF(mensagem);
saida.flush();
System.out.println("Enviado para Servidor C: "+mensagem);
}
private Integer lerMensagemServidorC() throws IOException {
String mensagem;
while((mensagem = entrada.readUTF()) != null){
System.out.println("Recebido Servidor C: "+mensagem);
return mensagem;
}
return null;
}
Sendo que faço assim para chama-las
conectar();
enviaMensagemServidorC(meuComando);
return lerMensagemServidorC();
e mantenho minha conexão aberta ao termino. Quando executo essa operação 1 ou mais vezes e meu servidor em C por acaso para de executar, ao passar pelo método conectar() ele não cai dentro do if lançando uma SocketException ao tentar enviar mensagem para o servidor(linha 26). Sei que existe cambiara para corrigir isso até fiz, mais queria saber se ao perder conexão porque o método sockCliente.isClosed() ainda continua como true? Não deveria ser false? Ou existe outro método para fazer essa verificação?
Obrigado a todos!