Prueba la funcionalidad de UDP con la CLI de OT

Ver código fuente en GitHub

OpenThread ofrece comandos UDP para usar con una red Thread a fin de probar la comunicación entre pares entre los sockets UDP. cli udp proporciona un socket de muestra con el que interactúan todos los comandos udp.

En los siguientes ejemplos, se muestra cómo puedes abrir y vincular sockets, cómo conectar el socket y cómo enviar mensajes mediante sockets UDP.

Comandos de UDP

Para obtener una lista de comandos udp, escribe help:

udp help
bind
close
connect
linksecurity
open
send
Done

Comando open

Usa el comando udp open para abrir el socket y comenzar la comunicación UDP. Luego, tienes la opción de vincular el socket a una dirección IP y un puerto específicos.

Comando bind

Después de open el socket, puedes ejecutar un comando udp bind para asignar una dirección IPv6 y un puerto al socket abierto. Esto vincula el socket para la comunicación. La asignación de la dirección IPv6 y el puerto también se conoce como la asignación de nombres al socket. Si no usas bind directamente en el socket (udp connect) o lo usas en un comando udp send, lo vinculas a un puerto efímero.

Comando connect

Se puede usar un comando udp connect para conectar el socket de ejemplo a una dirección de socket de par. Luego, puedes emitir un comando udp send para enviar un mensaje al intercambio de tráfico. Si el socket aún no está vinculado, emitir el comando udp connect también lo vinculará.

Comando send

Un comando udp send envía un mensaje mediante el socket de ejemplo a un destino cuyas direcciones IP y puerto UDP se pueden especificar con las variables del comando. Si la dirección IP y el puerto no se especifican en el comando udp send, el mensaje se envía mediante el socket de ejemplo al destino que se especificó en el comando udp connect. La emisión del comando udp send vincula el socket a un puerto efímero si el socket aún no se vinculó.

Comando close

Se recomienda que uses el comando udp close para cerrar el socket cuando ya no lo necesitas.

Comando linksecurity

Se puede usar el comando udp linksecurity a fin de habilitar o inhabilitar la seguridad de la capa de vínculos de datos para los mensajes.

Envía un mensaje entre dos nodos

  1. En el Nodo 1, abre el socket UDP.

    udp open
    Done
    
  2. En el Nodo 1, vincula el socket.

    udp bind :: 1234
    Done
    

    El uso de :: indica que bind debe usar la dirección IPv6 no especificada, por lo que la pila UDP/IPv6 asigna la dirección IPv6 de vinculación. Para ver opciones completas con udp bind, como la vinculación a una interfaz de red, consulta vinculación de udp.

1 En el Nodo 2, abre el socket UDP.

udp open
   Done
   

  1. En el Nodo 2, envía un mensaje simple al Nodo 1.

    udp send fdde:ad00:beef:0:bb1:ebd6:ad10:f33 1234 hello
    Done
    

    Este comando supone que el Nodo 2 ya descubrió la dirección del Nodo 1. Además, en este ejemplo, el administrador del Nodo 2 eligió no vincular el socket. Esto se debe a que el administrador del nodo 2 desea enviar un mensaje al nodo 1 sin tener en cuenta cuáles de sus direcciones IP y puertos se usan como la fuente del nodo 2. En este caso, el socket elige una dirección IP y un puerto de forma aleatoria.

    Para ver opciones completas con udp send, consulta udp send.

  2. El Nodo 1 confirma la recepción del mensaje del Nodo 2:

    5 bytes from fdde:ad00:beef:0:dac3:6792:e2e:90d8 49153 hello
    

Conecta el socket a la dirección del socket del par y, luego, envía un mensaje entre dos nodos

Este ejemplo es similar al anterior, pero demuestra cierta flexibilidad que tienes para usar sockets UDP. Con este método, primero debes conectar el socket a la dirección del socket de par y, luego, no necesitas especificar la dirección IP y el puerto de intercambio de tráfico cada vez que realices un udp send.

  1. En el Nodo 1, abre el socket UDP.

    udp open
    Done
    
  2. En el Nodo 1, vincula el socket.

    udp bind :: 1234
    Done
    
  3. En el Nodo 2, abre el socket UDP.

    udp open
    Done
    
  4. En el Nodo 2, usa el comando udp connect para abrir la comunicación con el Nodo 1.

    udp connect fdde:ad00:beef:0:bb1:ebd6:ad10:f33 1234
    Done
    

    Para ver opciones completas con udp connect, consulta udp connect.

  5. En el nodo 2, usa el comando udp send para enviar un mensaje al nodo 1, pero no especifiques ip ni port en la sintaxis del comando udp send.

    udp send hello
    Done
    

    Si no especificas ip ni port, el comando udp send usa ip y port que se especificaron en el comando udp connect.