En el API para la operación receive se dice:
data, err = client.receive() --> Realiza una lectura en un socket conectado. Devuelve la información disponible en el stream data. Si expira el timeout sin obtener datos nuevos devuelve en data: '' (vacío) y en err: 'timeout'.
Como se venían resolviendo los ejercicios de sockets (usando un API parecida a la de Java), para recibir datos del socket, lo que se hacia era obtener el InputStream asociado al Socket y luego hacer sucesivas lecturas sobre este stream. Ej:
String leido = "";
InputStream inputStream = socketClient.getInputStream();
while (line = inputStream.readLine != '""){ // lee linea a linea el stream hasta que encuentra una linea vacía
leido = leido + linea;
}
¿Con la nueva API se trabajaría de una forma similar? Ejemplo:
String leido = "";
data, err = socketClient.receive(); // Segun el API data es un Stream
while (line = data.readLine != '""){
leido = leido + linea;
}
Esto que digo no veo que cuadre con el tema del timeout. Porque, según la definición del API, nos enteramos del timeout solo al llamar al receive y no al consumir el stream data. Cuadraría más que el consumo del stream lanzara una excepción si se da un timeout.