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
Sul Nodo 1, apri il socket UDP.
udp open
DoneSul Nodo 1, associa il socket.
udp bind :: 1234
DoneL'uso di
::
indica chebind
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 conudp bind
, come l'associazione a un'interfaccia di rete, consulta l'associazione UDP.
1 Sul Nodo 2, apri il socket UDP.
udp open
Done
Sul Nodo 2, invia un semplice messaggio al Nodo 1.
udp send fdde:ad00:beef:0:bb1:ebd6:ad10:f33 1234 hello
DoneQuesto 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.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
.
Sul Nodo 1, apri il socket UDP.
udp open
DoneSul Nodo 1, associa il socket.
udp bind :: 1234
DoneSul Nodo 2, apri il socket UDP.
udp open
DoneSul 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
DonePer le opzioni complete con
udp connect
, consulta la sezione UDP ConnectSul Nodo 2, utilizza il comando
udp send
per inviare un messaggio al Nodo 1, ma non specificareip
eport
nella sintassi del comandoudp send
.udp send hello
DoneNon specificando
ip
eport
, il comandoudp send
utilizza i valoriip
eport
specificati nel comandoudp connect
.