Servidor
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 |
import java.net.ServerSocket import java.net.Socket import java.io.OutputStreamWriter import java.io.PrintWriter fun main() { val server = ServerSocket(12345) // Puerto de escucha println("Servidor en ejecución, esperando conexiones...") while (true) { val clientSocket = server.accept() println("Cliente conectado desde: ${clientSocket.inetAddress.hostAddress}") val words = listOf("example", "hello", "world", "process", "communication") val clientHandler = ClientHandler(clientSocket, words) Thread(clientHandler).start() } } class ClientHandler(private val clientSocket: Socket, private val words: List<String>) : Runnable { override fun run() { val writer = PrintWriter(clientSocket.getOutputStream(), true) for (word in words) { writer.println(word) } clientSocket.close() } } |
Cliente
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 |
import java.net.Socket import java.io.BufferedReader import java.io.InputStreamReader fun main() { val serverAddress = "127.0.0.1" // Cambia a la dirección IP o nombre de host del servidor val serverPort = 12345 // Puerto en el que escucha el servidor val clientSocket = Socket(serverAddress, serverPort) val reader = BufferedReader(InputStreamReader(clientSocket.getInputStream())) val letterCountThreads = mutableListOf<Thread>() while (true) { val word = reader.readLine() if (word == null) { break // Se ha alcanzado el final de las palabras } val letterCountThread = Thread { val letterCount = word.length println("Número de letras en '$word': $letterCount") } letterCountThreads.add(letterCountThread) letterCountThread.start() } for (thread in letterCountThreads) { thread.join() } clientSocket.close() } |