
26/10/2007, 10:13
|
 | Colaborador | | Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 5 meses Puntos: 454 | |
Re: DataInputStream read Hola:
Debes tener en cuenta varias cosas:
Si hay datos, read() devuelve el número de datos leídos, pero eso no implica que haya leído todos los datos disponibles. Deberías meter eso en un bucle hasta que hayas leído la cantidad de datos que esperas.
Se devuelve 0 si en el otra lado cierran la conexión. Si recibes un cero, debes a tu vez cerrar la conexión, puesto que en el otro lado han cerrado.
Se devuelve -1 si hay un error, NO si no hay más datos. Si hay un error -se devuelve -1- debes tratar de recuperar la conexión. Si el socket está abierto y no hay más datos, la llamada a read() se queda bloqueada hasta que haya datos, el otro lado cierre la conexión o salte un error.
Lo suyo es que crees un hilo con un blucle para read(), dejándole que se quede bloqueado si hace falta.
Se bueno. |