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
En el Nodo 1, abre el socket UDP.
udp open
DoneEn el Nodo 1, vincula el socket.
udp bind :: 1234
DoneEl uso de
::
indica quebind
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 conudp 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
En el Nodo 2, envía un mensaje simple al Nodo 1.
udp send fdde:ad00:beef:0:bb1:ebd6:ad10:f33 1234 hello
DoneEste 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.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
.
En el Nodo 1, abre el socket UDP.
udp open
DoneEn el Nodo 1, vincula el socket.
udp bind :: 1234
DoneEn el Nodo 2, abre el socket UDP.
udp open
DoneEn 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
DonePara ver opciones completas con
udp connect
, consulta udp connect.En el nodo 2, usa el comando
udp send
para enviar un mensaje al nodo 1, pero no especifiquesip
niport
en la sintaxis del comandoudp send
.udp send hello
DoneSi no especificas
ip
niport
, el comandoudp send
usaip
yport
que se especificaron en el comandoudp connect
.