Para la opción BLOQUEANTE. Suponiendo que la operación read_line se implementa a nivel del propio socket: ¿La idea es que el socket mantenga la parte no devuelta (lo que viene luego del \n) entre llamadas?
Ejemplo:
El contexto es el siguiente: se nos envía este string "Hola, que tal?\ncómo estas?\n". Al llamar por primera vez a read_line hay que devolver "Hola, que tal?" y la segunda vez que se llama "cómo estas?".
Suponiendo que se nos envía el string mencionado en dos partes: "Hola, que tal?\ncómo" y "estas?\n" (eso es lo que devolverían dos lecturas sucesivas con socket.receive()), la primera vez que llamamos a read_line el receive retorna esto: "Hola, que tal?\ncómo" y habría que devolver "Hola, que tal?". Si no guardamos en el socket el "cómo", la próxima vez que llamemos a read_line, estaríamos retornando "estas?" y no "cómo estas?" (ya que la parte del "cómo" ya fue consumida del buffer).
Era la idea de este ejercicio tomar en cuenta esto?
Para la opción NO BLOQUEANTE. Misma cuestión ya descrita y aparte ¿que se debe retornar si al llamar al receive este nos retorna "Hola, que"? ¿También habría que guardar en el socket lo leído pero no devuelto, no? ya que en esta opción como es no bloqueante no tiene una iteración esperando hasta leer un '\n'.