Tengo una aplicación de cliente-servidor con un servidor de Java. Funciona casi perfecto, excepto que después de un período prolongado de tiempo, de repente, un socket sigue colgando. Este socket no es más que uno de muchos, el resto parece estar bien todavía, pero una vez que llega al socket, el servidor simplemente no pasa la línea de envío. Estas son las piezas pertinentes del código:Java - Extraño zócalo colgante?
Socket socket; // A normal socket
out = new PrintWriter(socket.getOutputStream(), true); // The outstream
out.println(msg + "\0"); // This command is used to send stuff, msg is a String
No se lanzan excepciones, la aplicación de línea simplemente no parece conseguir más allá de la línea:
out.println(msg + "\0");
sí sé que la cadena es un buen uno, causa 4 o 5 tomas más antes de que este pueda enviarlo bien. También tenga en cuenta que, hasta donde yo sé, este socket podría enviar cientos de mensajes muy bien antes de que se bloquee repentinamente. ¿Alguien tiene una idea de qué tipo de error debería estar buscando?
¿Con qué sistema operativo se está ejecutando? ¿Estás hablando con algo cercano o lejano? – bmargulies
¿comprueba el tamaño de la cola de envío/recepción? Suena como un problema que he experimentado recientemente donde el buffer se llenó y causó que el resto de la conexión se cuelgue. –
¿Estás seguro de que el zócalo tiene un lector activo y no solo está lleno el búfer? – rsp