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
Lo siento, debes estar conectado para publicar un comentario.