Testar a funcionalidade do UDP com a CLI OT

Confira o código-fonte no GitHub

O OpenThread oferece comandos UDP para uso com uma rede Thread para testar a comunicação ponto a ponto entre soquetes UDP. O cli udp fornece um soquete de exemplo com todos os comandos udp interagem.

Os exemplos a seguir demonstram como abrir e vincular soquetes, como conectar o soquete e como enviar mensagens usando soquetes UDP.

Comandos UDP

Para ver uma lista de comandos udp, digite help:

udp help
bind
close
connect
linksecurity
open
send
Done

Comando open

Use o comando udp open para abrir o soquete e iniciar a comunicação UDP. Você terá a opção de vincular o soquete a uma porta e um endereço IP específicos.

Comando bind

Depois de open o soquete, execute um comando udp bind para atribuir um endereço IPv6 e uma porta ao soquete aberto. Isso vincula o soquete para comunicação. A atribuição do endereço e da porta IPv6 também é chamada de nomeação do soquete. Se você não usar bind diretamente no soquete, conecte-o (udp connect) ou use-o em um comando udp send para vincular o soquete a uma porta temporária.

Comando connect

Um comando udp connect pode ser usado para conectar o soquete de exemplo a um endereço de soquete de peering. Em seguida, você poderá emitir um comando udp send para enviar uma mensagem ao peering. Se o soquete ainda não estiver vinculado, a emissão do comando udp connect também o vinculará.

Comando send

Um comando udp send envia uma mensagem usando o soquete de exemplo para um destino cujo endereço IP e porta UDP podem ser especificados com as variáveis de comando. Se o endereço IP e a porta não forem especificados no comando udp send, a mensagem será enviada usando o soquete de exemplo para o destino especificado no comando udp connect. A emissão do comando udp send vincula o soquete a uma porta temporária se ele ainda não tiver sido vinculado.

Comando close

É recomendável usar o comando udp close para fechar o soquete quando ele não for mais necessário.

Comando linksecurity

O comando udp linksecurity pode ser usado para ativar ou desativar a segurança da camada de link de dados para mensagens.

Enviar uma mensagem entre dois nós

  1. No nó 1, abra o soquete UDP.

    udp open
    Done
    
  2. No Nó 1, vincule o soquete.

    udp bind :: 1234
    Done
    

    O uso de :: indica que bind precisa usar o endereço IPv6 não especificado, fazendo com que a pilha UDP/IPv6 atribua o endereço IPv6 de vinculação. Para ver as opções completas de udp bind, como a vinculação a uma interface de rede, consulte vinculação udp.

1 No Nó 2, abra o soquete UDP.

udp open
   Done
   

  1. No Nó 2, envie uma mensagem simples para o Nó 1.

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

    Esse comando pressupõe que o Nó 2 já descobriu o endereço do Nó 1. Além disso, neste exemplo, o administrador do nó 2 optou por não vincular o soquete. Isso ocorre porque o administrador do nó 2 quer enviar uma mensagem para o nó 1 sem se preocupar com quais endereços IP e portas são usados como a origem do nó 2. Neste cenário, o soquete escolhe um endereço IP e uma porta de forma aleatória.

    Para opções completas com udp send, consulte udp send.

  2. O nó 1 confirma o recebimento da mensagem do nó 2:

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

Conecte o soquete ao endereço do soquete de peering e envie uma mensagem entre dois nós

Este exemplo é semelhante ao anterior, mas demonstra um pouco da flexibilidade que você tem em usar soquetes UDP. Com este método, primeiro você conecta o soquete ao endereço de soquete de peering e não precisa especificar o endereço IP e a porta de peering sempre que fizer um udp send.

  1. No nó 1, abra o soquete UDP.

    udp open
    Done
    
  2. No Nó 1, vincule o soquete.

    udp bind :: 1234
    Done
    
  3. No nó 2, abra o soquete UDP.

    udp open
    Done
    
  4. No Nó 2, use o comando udp connect para abrir a comunicação com o Nó 1.

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

    Para ver opções completas com udp connect, consulte UDP Connect.

  5. No Nó 2, use o comando udp send para enviar uma mensagem ao Nó 1, mas não especifique ip e port na sintaxe do comando udp send.

    udp send hello
    Done
    

    Ao não especificar ip e port, o comando udp send usará os ip e port que foram especificados no comando udp connect.