11/10/2011, 08:50
|
| Colaborador | | Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes 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. |