Hola a todos,
Tengo que implementar un proxy web en Java. Y tengo un pequeño problemilla con los sockets. Cuando conecto al servidor web, envio la cabecera HTTP del cliente y espero la respuesta de la siguiente manera:
do
try
{
if ( servidor.isConnected() )
{
contador = datos_in_servidor.read( buffer );
if ( contador > 0 )
{
datos_out_client.write( buffer );
}
}
}
catch(Throwable e )
{
System.err.print("Error lectura datos servidor:" + e.getMessage() );
contador = 0;
}
while ( contador > 0 );
datos_in_servidor es la instancia de un DataInputStream del socket del servidor, que funciona perfectamente. La teroria dice que al hacer datos_in_servidor.read( buffer ) retorna el nº de bytes que se ha leido, 0 o -1.
En mi caso la primera vez que entra en el read me devuelve 417 bytes (por ejemplo) y en teoria ha acabado la connexion porque ya no existen mas datos.
Como hago el bucle, vuelve a realizar el read por segunda vez, pero el read no me devuelve -1 (no hay mas datos) y tengo que poner un timeout para saltar del bucle. La pregunta és como se detecta que no existen más datos sin realizar timeouts?!?!?