Contenidos
Clase Persona
1 2 3 |
import java.io.Serializable data class Persona(val nombre: String, val edad: Int) : Serializable |
Clase 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 |
import java.io.ObjectInputStream import java.net.ServerSocket class Servidor(private val puerto: Int) { fun iniciarServidor() { val serverSocket = ServerSocket(puerto) println("Servidor esperando conexiones en el puerto $puerto...") val socket = serverSocket.accept() println("Cliente conectado: ${socket.inetAddress.hostAddress}") val inputStream = ObjectInputStream(socket.getInputStream()) val objetoDeserializado = inputStream.readObject() as Persona println("Objeto recibido:") println("Nombre: ${objetoDeserializado.nombre}") println("Edad: ${objetoDeserializado.edad}") inputStream.close() socket.close() serverSocket.close() } } |
Clase cliente
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
import java.io.ObjectOutputStream import java.net.Socket class Cliente(private val host: String, private val puerto: Int) { fun enviarObjeto(persona: Persona) { val socket = Socket(host, puerto) println("Conectado al servidor: $host:$puerto") val outputStream = ObjectOutputStream(socket.getOutputStream()) outputStream.writeObject(persona) outputStream.flush() outputStream.close() socket.close() } } |
Programa que inicia el servidor
1 2 3 4 5 6 7 8 9 10 11 12 |
fun main() { val puerto = 12345 // Iniciar servidor en un hilo separado val servidorThread = Thread { val servidor = Servidor(puerto) servidor.iniciarServidor() } servidorThread.start() // Esperar a que el servidor termine servidorThread.join() } |
Programa que inicia el cliente
1 2 3 4 5 6 7 8 9 |
fun main() { val persona = Persona("Juan", 25) val puerto = 12345 val host = "localhost" // Enviar objeto desde el cliente val cliente = Cliente(host, puerto) cliente.enviarObjeto(persona) } |