Sockets UDP en Kotlin

uso de Sockets UDP en Kotlin

Servidor.kt

object Servidor {
    @JvmStatic
    fun main(args: Array<String>) {
        val PUERTO = 5000
        var buffer = ByteArray(1024)

        lateinit var direccionCliente: InetAddress
        lateinit var socketUDP: DatagramSocket
        var puertoCliente: Int = 0
        lateinit var mensaje: String
        lateinit var peticion: DatagramPacket
        lateinit var respuesta: DatagramPacket

        try {
            println("Iniciado el servidor UDP")
            //Creacion del socket
            socketUDP = DatagramSocket(PUERTO)

            //Siempre atendera peticiones
            while (true) {
                //Preparo la respuesta
                peticion = DatagramPacket(buffer, buffer.size)

                //Recibo el datagrama
                socketUDP.receive(peticion)
                println("Recibo la informacion del cliente")

                //Convierto lo recibido y mostrar el mensaje
                mensaje = String(peticion.getData())
                println(mensaje)

                //Obtengo el puerto y la direccion de origen
                //Sino se quiere responder, no es necesario
                puertoCliente = peticion.getPort()
                direccionCliente = peticion.getAddress()

                mensaje = "¡Hola mundo desde el servidor!"
                buffer = mensaje.toByteArray()

                //creo el datagrama
                respuesta = DatagramPacket(buffer, buffer.size, direccionCliente, puertoCliente)

                //Envio la información
                println("Envio la informacion del cliente")
                socketUDP.send(respuesta)
            }
        } catch (ex: SocketException) {
            Logger.getLogger(Servidor::class.java.getName()).log(Level.SEVERE, null, ex)
        } catch (ex: IOException) {
            Logger.getLogger(Servidor::class.java.getName()).log(Level.SEVERE, null, ex)
        }
    }
}

Cliente.kt

object Cliente {
    @JvmStatic
    fun main(args: Array<String>) {
        //puerto del servidor
        val PUERTO_SERVIDOR = 5000
        //buffer donde se almacenara los mensajes
        var buffer = ByteArray(1024)

        lateinit var direccionServidor: InetAddress
        lateinit var socketUDP: DatagramSocket
        lateinit var mensaje: String
        lateinit var peticion: DatagramPacket

        if (args.size != 1) {
            System.err.println("Uso: java Cliente direccionIP")
        } else {
            try {
                //Obtengo la localizacion de localhost
                //InetAddress direccionServidor = InetAddress.getByName("localhost");
                direccionServidor = InetAddress.getByName(args[0])

                //Creo el socket de UDP
                socketUDP = DatagramSocket()

                mensaje = "¡Hola mundo desde el cliente!"

                //Convierto el mensaje a bytes
                buffer = mensaje.toByteArray()

                //Creo un datagrama
                val pregunta = DatagramPacket(buffer, buffer.size, direccionServidor, PUERTO_SERVIDOR)

                //Lo envio con send
                println("Envio el datagrama")
                socketUDP.send(pregunta)

                //Preparo la respuesta
                peticion = DatagramPacket(buffer, buffer.size)

                //Recibo la respuesta
                socketUDP.receive(peticion)
                println("Recibo la peticion")

                //Cojo los datos y lo muestro
                mensaje = String(peticion.getData())
                println(mensaje)

                //cierro el socket
                socketUDP.close()
            } catch (ex: SocketException) {
                Logger.getLogger(Cliente::class.java.getName()).log(Level.SEVERE, null, ex)
            } catch (ex: UnknownHostException) {
                Logger.getLogger(Cliente::class.java.getName()).log(Level.SEVERE, null, ex)
            } catch (ex: IOException) {
                Logger.getLogger(Cliente::class.java.getName()).log(Level.SEVERE, null, ex)
            }
        }
    }
}

Código de Sockets_UDP_Kotlin (hecho con IntelliJ Idea 2025.3.1.1)

Deja una respuesta