Visualizza il codice sorgente su GitHub
OpenThread offre comandi TCP da utilizzare con una rete Thread per testare la comunicazione peer-to-peer tra gli endpoint TCP. cli tcp
fornisce un endpoint TCP di esempio e un listener TCP di esempio con cui interagiscono tutti i comandi tcp
.
Le panoramiche dei comandi e l'esempio che segue forniscono informazioni sull'inizializzazione dell'endpoint TCP e del listener TCP di esempio, su come connettersi a un endpoint TCP peer e su come inviare un messaggio al peer.
Comandi TCP
Per un elenco dei comandi tcp
, digita help
:
tcp help
abort
benchmark
bind
connect
deinit
init
listen
send
sendend
stoplistening
Done
Per le descrizioni e la sintassi di tutti i comandi, consulta la documentazione di riferimento sui comandi dell'interfaccia a riga di comando.
I comandi TCP iniziano in ordine alfabetico con tcp abort.
Comando init
Utilizza il comando tcp init
per inizializzare il modulo TCP e iniziare la comunicazione TCP.
Il modulo TCP può quindi eseguire molte funzioni, come l'ascolto delle connessioni in entrata utilizzando il listener TCP di esempio fornito dall'interfaccia a riga di comando tcp
.
Per annullare l'inizializzazione del listener TCP di esempio e dell'endpoint TCP di esempio, esegui il comando tcp deinit
.
Comando bind
Per associare l'endpoint TCP di esempio dopo aver inizializzato il modulo TCP, esegui un comando tcp bind
per assegnare un indirizzo IPv6 e una porta all'endpoint TCP.
Questo associa l'endpoint per la comunicazione. L'assegnazione dell'indirizzo e della porta IPv6 è anche definita "denominazione dell'endpoint".
Comando listen
Per utilizzare il listener TCP di esempio dopo aver inizializzato il modulo TCP, esegui un comando tcp listen
e specifica l'indirizzo IPv6 e la porta di ascolto.
Per impedire al listener TCP di esempio di ascoltare le connessioni TCP in entrata,
emetti il comando tcp stoplistening
.
Comando connect
Un comando tcp connect
connette l'endpoint TCP di esempio a un indirizzo dell'endpoint TCP peer.
Comando send
Una volta stabilita una connessione tra due nodi, esegui un comando tcp send
per inviare un messaggio al peer.
benchmark
comandi
Una volta stabilita una connessione TCP tra due nodi, puoi utilizzare facoltativamente i comandi benchmark
per inviare grandi quantità di dati tra i nodi al fine di testare la larghezza di banda e le prestazioni della rete. Nei risultati di benchmark
verranno forniti il numero di byte trasmessi in millisecondi
e il Goodput TCP.
Comando abort
Per terminare immediatamente e senza cerimonie di una connessione TCP, esegui il comando tcp abort
su uno dei due nodi per far passare l'endpoint TCP in uno stato chiuso.
Comando sendend
Quando un nodo invia dati all'altro, il primo nodo può inviare un comando tcp sendend
per avvisare il secondo di non aspettarsi più dati. Anche il secondo nodo può inviare un codice tcp sendend
al primo.
Quando ogni nodo riceve un messaggio TCP: Disconnected
, la connessione TCP
tra i due nodi viene interrotta. È consigliabile, ma non obbligatorio, emettere questo comando una volta completato il trasferimento dei dati.
Invia un messaggio tra due nodi
Sul nodo 1, inizializza il modulo dell'interfaccia a riga di comando TCP, quindi resta in ascolto delle connessioni in entrata utilizzando il listener TCP di esempio.
tcp init
tcp listen :: 30000
L'uso di
::
indica chelisten
deve usare l'indirizzo IPv6 non specificato, in modo che lo stack TCP/IPv6 assegni l'indirizzo IPv6. Il numero della porta è 30.000.Sul nodo 2, inizializza il modulo dell'interfaccia a riga di comando TCP, connettiti al nodo 1, quindi invia un semplice messaggio.
tcp init
tcp connect fe80:0:0:0:a8df:580a:860:ffa4 30000
tcp send hello
Verifica
In base ai passaggi di esempio mostrati sopra, l'output previsto è il seguente:
- Dopo che il nodo 2 ha eseguito il comando
tcp connect
, il nodo 2 dovrebbe ricevere il messaggioTCP: Connection established
. - Il nodo 1 dovrebbe quindi ricevere i messaggi (con la porta e l'indirizzo IPv6 di esempio):
Accepted connection from [fe80:0:0:0:8f3:f602:bf9b:52f2]:49152
TCP: Connection established
- Dopo che il nodo 2 ha eseguito il comando
tcp send
, il nodo 1 dovrebbe ricevere il messaggioTCP: Received 5 bytes: hello