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 |
import java.net.DatagramPacket import java.net.InetAddress import java.net.MulticastSocket fun main() { val multicastGroup = "224.0.0.1" // Grupo de multicast al que te quieres unir val multicastPort = 5000 // Puerto del grupo de multicast val messageToSend = "¡Hola a todos!" // Mensaje a enviar try { val multicastAddress = InetAddress.getByName(multicastGroup) val multicastSocket = MulticastSocket(multicastPort) multicastSocket.joinGroup(multicastAddress) // Unirse al grupo de multicast // Enviar mensaje val sendBuffer = messageToSend.toByteArray() val sendPacket = DatagramPacket(sendBuffer, sendBuffer.size, multicastAddress, multicastPort) multicastSocket.send(sendPacket) // Escuchar mensajes continuamente while (true) { val receiveBuffer = ByteArray(1024) val receivePacket = DatagramPacket(receiveBuffer, receiveBuffer.size) multicastSocket.receive(receivePacket) val receivedMessage = String(receivePacket.data, receivePacket.offset, receivePacket.length) println("Mensaje recibido: $receivedMessage") } } catch (e: Exception) { e.printStackTrace() } } |
Explicación del código:
- Primero, se importan las clases necesarias para trabajar con sockets de multicast en Kotlin.
- Se define el grupo de multicast al que te quieres unir utilizando la dirección IP correspondiente. En este ejemplo, se utiliza la dirección de grupo de multicast «224.0.0.1».
- Se especifica el puerto del grupo de multicast. En este caso, se utiliza el puerto 5000.
- Se define el mensaje que se desea enviar al grupo de multicast. En este ejemplo, se utiliza el mensaje «¡Hola a todos!».
- Se crea una instancia de
MulticastSocket
utilizando el puerto del grupo de multicast. - Se utiliza el método
joinGroup()
para unirse al grupo de multicast especificado por la dirección IP. - Se convierte el mensaje a enviar en un arreglo de bytes utilizando el método
toByteArray()
. - Se crea un objeto
DatagramPacket
que encapsula el mensaje a enviar, la dirección IP del grupo de multicast y el puerto del grupo de multicast. - Se utiliza el método
send()
delMulticastSocket
para enviar el paquete de datos al grupo de multicast. - A continuación, se inicia un bucle infinito utilizando
while (true)
para escuchar continuamente los mensajes entrantes. - Dentro del bucle, se crea un búfer de bytes para recibir los datos del mensaje entrante.
- Se crea un objeto
DatagramPacket
para almacenar los datos del mensaje entrante. - Se utiliza el método
receive()
delMulticastSocket
para recibir el paquete de datos. - Se convierten los datos recibidos a una cadena de texto utilizando el constructor
String()
. - Se imprime en la consola el mensaje recibido.
- El bucle se repite y el programa sigue escuchando mensajes entrantes hasta que se detenga manualmente.