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 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
// Código del servidor import java.io.BufferedReader import java.io.InputStreamReader import java.io.OutputStream import java.net.ServerSocket fun main() { val port = 12345 // Puerto en el que escuchará el servidor try { val serverSocket = ServerSocket(port) println("Servidor esperando en el puerto $port...") val clientSocket = serverSocket.accept() println("Cliente conectado desde: ${clientSocket.inetAddress.hostAddress}") val input = BufferedReader(InputStreamReader(clientSocket.getInputStream())) val output = clientSocket.getOutputStream() while (true) { val command = input.readLine() // Leer el comando del cliente if (command == "exit") { break } println("Ejecutando comando: $command") val process = Runtime.getRuntime().exec(command) val reader = BufferedReader(InputStreamReader(process.inputStream)) val result = StringBuilder() var line: String? while (reader.readLine().also { line = it } != null) { result.append(line).append("\n") } val response = result.toString().toByteArray() output.write(response) // Enviar la salida al cliente output.flush() } println("Conexión cerrada.") clientSocket.close() serverSocket.close() } catch (e: Exception) { e.printStackTrace() } } // Código del cliente import java.io.BufferedReader import java.io.InputStreamReader import java.io.OutputStream import java.net.Socket fun main() { val serverAddress = "localhost" // Dirección IP o nombre de host del servidor val serverPort = 12345 // Puerto del servidor try { val socket = Socket(serverAddress, serverPort) val output = socket.getOutputStream() val input = BufferedReader(InputStreamReader(socket.getInputStream())) val command = "ls -l" // Comando a ejecutar en el servidor output.write(command.toByteArray()) output.write("\n".toByteArray()) output.flush() var line: String? while (input.readLine().also { line = it } != null) { println(line) } socket.close() } catch (e: Exception) { e.printStackTrace() } } |