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 32 33 34 35 36 37 |
import java.io.* import java.net.* fun main() { val serverSocket = ServerSocket(12345) println("Servidor en espera de conexiones...") while (true) { val clientSocket = serverSocket.accept() val input = BufferedReader(InputStreamReader(clientSocket.getInputStream())) val output = PrintWriter(clientSocket.getOutputStream(), true) val clientMessage = input.readLine() when (clientMessage) { "HOLA" -> { val random = (0..1).random() if (random == 0) { output.println("NACK") } else { output.println("ACK") receiveAndDisplayStudent(clientSocket) } } else -> output.println("NACK") } clientSocket.close() } } fun receiveAndDisplayStudent(socket: Socket) { val input = ObjectInputStream(socket.getInputStream()) val student = input.readObject() as Alumno println("Alumno recibido: ${student.nombre}, ${student.apellido}, ${student.edad}") } data class Alumno(val nombre: String, val apellido: String, val edad: Int) : Serializable |
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 |
import java.io.* import java.net.* fun main() { val serverAddress = "localhost" val serverPort = 12345 val clientSocket = Socket(serverAddress, serverPort) val output = PrintWriter(clientSocket.getOutputStream(), true) val input = BufferedReader(InputStreamReader(clientSocket.getInputStream())) output.println("HOLA") val serverResponse = input.readLine() when (serverResponse) { "ACK" -> { val student = Alumno("John", "Doe", 25) val objectOutput = ObjectOutputStream(clientSocket.getOutputStream()) objectOutput.writeObject(student) } "NACK" -> println("Servidor respondió con NACK, finalizando ejecución del cliente.") else -> println("Respuesta inesperada del servidor.") } clientSocket.close() } |