Ver Mensaje Individual
  #3 (permalink)  
Antiguo 11/10/2011, 08:50
Avatar de chuidiang
chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 2 meses
Puntos: 454
Respuesta: Mantener socket abierto en TCP

El código ayudaría, pero así, con un poco de intuición, un posible problema sea que estés leyendo el mensaje con un readline() o similar. Esto está esperando por el mensaje leyendo todos los bytes que encuentra hasta que reciba un retorno de carro. Si no recibe el retorno de carro, se queda indefinidamente a la espera.

Al cerrar el socket, se producirá un error en lectura de cierre de socket, pero posiblemente recibas lo leido hasta el momento y eso justificaría que tengas que cerrar el socket para que el otro lado reciba lo leído hasta el momento.

Y si no es readline() y retorno de carro, quizás sea que estés esperando algún tipo de caracter que haga de fin de mensaje o que tengas un bucle de lectura hasta garantizar que llegan los n bytes que componen el mensaje o cualquier variante. El socket lector no detecta el mensaje completo y se queda a la espera de lo que le falte (fin de mensaje o número de bytes). El cierre de socket hace que salga de esta espera y entregue lo leído hasta el momento.

Se bueno.
__________________
Apuntes Java
Wiki de Programación