Hola felices fiestas, gracias por contestar. Estuve probando el codigo que escribiste y me sale una excepción "Exception in thread "Thread-0" java.lang.OutOfMemoryError: Java heap space". Porque cuando se lee en la linea int len=readInt() me devuelve un valor de 1010792557 y por consecuencia en data = new byte[len] es muy grande el valor. No habia utilizado el método readInt(). Suelo utilizar mas el read() que lee byte por byte. Aunque nose si lo entiendo bien al método readInt() que según dice la documentación lee de a cuatro bytes y es raro que me de un número de 1010792557. Por otra parte estuve probando sobre el bloqueo y llego a la conclusión que se va a bloquear siempre en el metodo read(). Solo recien cuando lleguen mas datos se va a desbloquear. Y esto es leyendo byte por byte. Lo que si nose muy bien es como leer de más de un byte ahi si se bloquea para siempre según lo que probe. Por ejemplo si creo un array de byte de 1024 de capacidad y luego utilizo el metodo read(byte[] b) entonces si solo hay 500 datos disponibles en el flujo entonces se bloqueara ahi y no podra avanzar más. Solo pense que puede ser porque todavia no logro llenar los 1024 bytes de capacidad del array. Probe enviar mas datos para ver si se llena pero aun quedo bloqueado. Solo si es justa la cantidad entonces no se va a bloquear. En otras palabras habria que saber la cantidad de bytes que hay y eso seria utilizando available() pero ya lo tengo descartado.
Saludos.
Saludos.