SERVER HILO POR CONEXION

El problema aqui es que tan pronto algun cliente se conecta, el queda conectado infinitamente, si trato de cerrar la conexion con este servidor ya quedo desconectado y me toca reiniciar la aplicacion cliente para que pueda volver a mandar informacion.

este en un sencillo ejemplo que hice para el manejo de tramas, del cliente recibo una trama el server procesa esa trama y segun el codigo de esa trama se ejucate una funcion a realizar y contrulle una trama de respuesta.

me gustaria añadirle a este server 3 cosas:

1). que desconecte los clientes que después de 1 minuto esten inactivos osea que no esten consultado el socket server
y si el server cierra la conexion en el cliente que hay que indicarle para no tener que reiniciar el aplicativo

2). manejo de timeout que si el cliente intenta conectar al server y no recibe respuesta en 20 segundos recibir una señal para mandar mensaje respectivo

3) como seria para añadir un log en el lado del server

dejo acontinuacion el server y cliente

 

 

***********************************CLIENTE************************************************************

 

 

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

timeouts

Pues el timeout de conexión lo especificas en el método   del lado del cliente.

Para que los desconectes después de un minuto de inactividad, simplemente ponle un timeout de lectura de un minuto a cada socket que recibes en el server, cachas la SocketTimeoutException y simplemente cierras el socket. Del lado del cliente deberías poner un timeout un poco más amplio, para darle oportunidad al server de que conteste las peticiones. Por ejemplo, si el server se puede tardar 20 segundos en contestar, entonces el timeout de lectura en el cliente debe ser 80 segundos.

Y eso de tener que reiniciar la aplicación me parece que se puede arreglar simplemente reconectando al cliente (es decir, crear un nuevo socket y conectarse de nuevo al server), no veo por qué tienen que reiniciar la aplicación.

cuando le añado al server timeout

en la clase del server listenersocket le añadi un time out en el while(true){....} pense que ese time out era uno para cada cliente pero cunado se cumple el server muere.

en el cliente añadie esto:

 

despues de un minuto el cliente queda desactivado y no manda mas informacion, ahi es donde me toca reiniciar y no se porque.

ezamudio es tu blog vi un ejemplo de server el de evitar ataques Dns creo que fue y espera info en bytes... lees el tamaño y hacers un while miestra ese tamaño y timeout, intente hacer algo asi en mi server y se totea al cumplir el timeout, no se si eso solo funcion en ese tipo de server que espera bytes .