Test della funzionalità UDP con OT CLI

Visualizza il codice sorgente su GitHub

OpenThread offre comandi UDP da utilizzare con una rete Thread per testare la comunicazione peer-to-peer tra i socket UDP. cli udp fornisce un socket di esempio con cui tutti i comandi udp interagiscono.

Gli esempi che seguono mostrano come aprire e associare i socket, come collegare il socket e come inviare messaggi utilizzando i socket UDP.

Comandi UDP

Per un elenco di comandi udp, digita help:

udp help
bind
close
connect
linksecurity
open
send
Done

Comando open

Utilizza il comando udp open per aprire il socket e iniziare la comunicazione UDP. Hai quindi la possibilità di associare il socket a una porta e a un indirizzo IP specifici.

Comando bind

Dopo aver open il socket, puoi eseguire un comando udp bind per assegnare un indirizzo IPv6 e una porta al socket aperto. Questo associa il socket per la comunicazione. L'assegnazione dell'indirizzo IPv6 e della porta viene anche definita come denominazione del socket. Se non esegui direttamente bind il socket, il collegamento del socket (udp connect) o l'utilizzo in un comando udp send associa il socket a una porta temporanea.

Comando connect

Un comando udp connect può essere utilizzato per collegare il socket di esempio a un indirizzo del socket peer. Puoi quindi eseguire un comando udp send per inviare un messaggio al peer. Se il socket non è già associato, l'invio del comando udp connect associa anche il socket.

Comando send

Un comando udp send invia un messaggio utilizzando il socket di esempio a una destinazione il cui indirizzo IP e la porta UDP possono essere specificati con le variabili del comando. Se l'indirizzo IP e la porta non sono specificati nel comando udp send, il messaggio viene inviato utilizzando il socket di esempio alla destinazione specificata nel comando udp connect. L'emissione del comando udp send associa il socket a una porta temporanea, se non è già stato associato.

Comando close

Ti consigliamo di utilizzare il comando udp close per chiudere il socket quando non è più necessario.

Comando linksecurity

Il comando udp linksecurity può essere utilizzato per attivare o disattivare la sicurezza a livello di link dati per i messaggi.

Invia un messaggio tra due nodi

  1. Sul Nodo 1, apri il socket UDP.

    udp open
    Done
    
  2. Sul Nodo 1, associa il socket.

    udp bind :: 1234
    Done
    

    L'uso di :: indica che bind deve utilizzare l'indirizzo IPv6 non specificato, quindi fa in modo che lo stack UDP/IPv6 assegni l'indirizzo IPv6 di associazione. Per le opzioni complete con udp bind, come l'associazione a un'interfaccia di rete, consulta l'associazione UDP.

1 Sul Nodo 2, apri il socket UDP.

udp open
   Done
   

  1. Sul Nodo 2, invia un semplice messaggio al Nodo 1.

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

    Questo comando presuppone che il Nodo 2 abbia già rilevato l'indirizzo del Nodo 1. Inoltre, in questo esempio, l'amministratore del Nodo 2 ha scelto di non associare il socket. Questo perché l'amministratore del Nodo 2 vuole inviare un messaggio al Nodo 1 senza preoccuparsi di quali indirizzi IP e porte vengono utilizzati come origine del Nodo 2. In questo scenario, il socket sceglie un indirizzo IP e una porta in modo casuale.

    Per le opzioni complete con udp send, consulta l'invio UPI.

  2. Il Nodo 1 conferma la ricezione del messaggio dal Nodo 2:

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

Collega il socket all'indirizzo del socket peer, quindi invia un messaggio tra due nodi

Questo esempio è simile al precedente, ma dimostra una certa flessibilità nell'utilizzo dei socket UDP. Con questo metodo, connetti prima il socket all'indirizzo del socket peer, quindi non devi specificare l'indirizzo IP e la porta del peer ogni volta che esegui un'udp send.

  1. Sul Nodo 1, apri il socket UDP.

    udp open
    Done
    
  2. Sul Nodo 1, associa il socket.

    udp bind :: 1234
    Done
    
  3. Sul Nodo 2, apri il socket UDP.

    udp open
    Done
    
  4. Sul Nodo 2, usa il comando udp connect per aprire la comunicazione con il Nodo 1.

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

    Per le opzioni complete con udp connect, consulta la sezione UDP Connect

  5. Sul Nodo 2, utilizza il comando udp send per inviare un messaggio al Nodo 1, ma non specificare ip e port nella sintassi del comando udp send.

    udp send hello
    Done
    

    Non specificando ip e port, il comando udp send utilizza i valori ip e port specificati nel comando udp connect.