Lo que se Cae, es el envio de ObjectOutPutStream, ya que cuando intento conectarme con el cliente nuevamente al Server pues este se conecta pero no se puede enviar nada ,ya que el OutputStream genera la siguiente Excepcion, pero en mi codigo sigo las pautas que me indicaste("No se si lo hice mal"), cierro la conexion del cliente, tiro los Output e InputStream si los hay y tambien ObjectOutputStream, y luego me entre en el accept hasta que el cliente acepte dentro del timeout especificado, el cliente acepta pero no se pude escrbir nada.
ya que me genera la siguiente excepcion.
Se cae acá:
public void restart(){
try {
//cierro la conexion del cliente
if(cliente != null){
cliente.close();
cliente = null;
//y me deshago de los InputStream/OutputStream incluyendo los de objetos.
stdOuput.close();
stdOuput = null;
*/ Aca se cae*/ salidaObje.close();
salidaObje = null;
}
*/ Aca se cae*/ start();
}catch(Exception e){ e.printStackTrace(); }
}
Excepcion:
java.net.SocketException: Socket closed
at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:99)
at java.net.SocketOutputStream.write(SocketOutputStream.java:136)
at java.io.ObjectOutputStream$BlockDataOutputStream.drain(ObjectOutputStream.java:1838)
at java.io.ObjectOutputStream$BlockDataOutputStream.flush(ObjectOutputStream.java:1783)
at java.io.ObjectOutputStream.flush(ObjectOutputStream.java:691)
at java.io.ObjectOutputStream.close(ObjectOutputStream.java:712)
at openbravo.pos.modif.remote.ServerSide.restart(ServerSide.java:49)
at openbravo.pos.modif.remote.ServerSide.sendData(ServerSide.java:76)
Lo curioso del caso es que antes de cerrar una conexion cliente, averiguo si este no es nulo, si es asi, procedo a cerrar conexiones,OutputStream, ObjectOutputStream, ya que esta se obtienen atravez del cliente.
y me da el error de socket closed, cuando llamo al metodo Start tambien me da error, ya que este es que se encarga de hacer nuevament el accept, y crear el nuevo ObjectOutputStream para la nueva conexion.
PD: El cliente se conecta al server y el server envia datos correctamente, pero si por alguna razon el cliente se desconecta e intenta conectarse, se conecta pero, el server no puede enviar Datos.
Lo que quiero es que si se interrumpe la conexion del server con el cliente, el cliente pueda volver a conectarse y compartir datos, si puedes creame un pequeño ejemplo, para guiarme, pero que envien fatos constante.
Otra cosa, estaba pensando hacer que si el cliente cae el server tambien, y se reinicie el proceso de conexion de ambos, no se no me parece elegante pero provare a ver si funciona.
Adios y gracias.