|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
import java.io.BufferedReader import java.io.InputStreamReader import java.io.PrintWriter import java.io.PipedInputStream import java.io.PipedOutputStream fun main() { for (i in 1..5) { // Pipe: padre → hijo val padreEscribe = PipedOutputStream() val hijoLee = PipedInputStream(padreEscribe) // Pipe: hijo → padre val hijoEscribe = PipedOutputStream() val padreLee = PipedInputStream(hijoEscribe) val hilo = Thread { // El hijo recibe el mensaje val entrada = BufferedReader( InputStreamReader(hijoLee) ) val mensaje = entrada.readLine() // Lo convierte a mayúsculas val respuesta = mensaje.uppercase() // El hijo responde al padre val salida = PrintWriter( hijoEscribe, true ) salida.println(respuesta) println("Hijo $i recibe: $mensaje") println("Hijo $i responde: $respuesta") } hilo.start() // El padre envía el mensaje val salida = PrintWriter( padreEscribe, true ) salida.println("hola hijos") // El padre recibe la respuesta val entrada = BufferedReader( InputStreamReader(padreLee) ) val respuesta = entrada.readLine() println("Padre recibe del hijo $i: $respuesta") hilo.join() } } |