OpenThread bietet UDP-Befehle für die Verwendung mit einem Thread-Netzwerk, um die Peer-to-Peer-Kommunikation zwischen UDP-Sockets zu testen. cli udp
stellt einen Beispiel-Socket bereit, mit dem alle udp
-Befehle interagieren.
Die folgenden Beispiele zeigen, wie Sie Sockets öffnen und binden, wie Sie den Socket verbinden und wie Sie Nachrichten mit UDP-Sockets senden.
UDP-Befehle
Geben Sie help
ein, um eine Liste von udp
-Befehlen aufzurufen:
udp help
bind
close
connect
linksecurity
open
send
Done
Befehl open
Verwenden Sie den Befehl udp open
, um den Socket zu öffnen und die UDP-Kommunikation zu starten.
Sie haben dann die Möglichkeit, den Socket an eine bestimmte IP-Adresse und einen bestimmten Port zu binden.
Befehl bind
Nachdem Sie den Socket mit open
versehen haben, können Sie den Befehl udp bind
ausführen, um dem offenen Socket eine IPv6-Adresse und einen Port zuzuweisen. Dadurch wird der Socket für die Kommunikation gebunden. Das Zuweisen der IPv6-Adresse und des IPv6-Ports wird auch als Benennung des Sockets bezeichnet. Wenn Sie den Socket nicht direkt bind
, verbinden Sie ihn (udp connect
) oder verwenden ihn in einem udp send
-Befehl, um den Socket an einen sitzungsspezifischen Port zu binden.
Befehl connect
Mit dem Befehl udp connect
kann der Beispiel-Socket mit einer Peer-Socket-Adresse verbunden werden.
Sie können dann einen udp send
-Befehl ausgeben, um eine Nachricht an den Peer zu senden. Wenn der Socket noch nicht gebunden ist, wird durch Ausführen des Befehls udp connect
auch der Socket gebunden.
Befehl send
Ein udp send
-Befehl sendet eine Nachricht mit dem Beispiel-Socket an ein Ziel, dessen IP-Adresse und UDP-Port mit den Befehlsvariablen angegeben werden können.
Wenn im Befehl udp send
keine IP-Adresse und kein Port angegeben sind, wird die Nachricht über den Beispiel-Socket an das im Befehl udp connect
angegebene Ziel gesendet.
Mit dem Befehl udp send
wird der Socket an einen sitzungsspezifischen Port gebunden, wenn der Socket noch nicht gebunden wurde.
Befehl close
Es wird empfohlen, den Socket mit dem Befehl udp close
zu schließen, wenn er nicht mehr benötigt wird.
Befehl linksecurity
Mit dem Befehl udp linksecurity
können Sie die Sicherheit der Datenschicht für Nachrichten aktivieren oder deaktivieren.
Eine Nachricht zwischen zwei Knoten senden
Öffnen Sie den UDP-Socket auf Knoten 1.
udp open
DoneBinden Sie den Socket an Knoten 1.
udp bind :: 1234
DoneDie Verwendung von
::
gibt an, dassbind
die nicht angegebene IPv6-Adresse verwenden soll, sodass der UDP/IPv6-Stack die bindende IPv6-Adresse zuweist. Vollständige Optionen mitudp bind
, z. B. die Bindung an eine Netzwerkschnittstelle, finden Sie unter udp bind.
1 Öffnen Sie auf Knoten 2 den UDP-Socket.
udp open
Done
Senden Sie auf Knoten 2 eine einfache Nachricht an Knoten 1.
udp send fdde:ad00:beef:0:bb1:ebd6:ad10:f33 1234 hello
DoneBei diesem Befehl wird davon ausgegangen, dass Knoten 2 die Adresse von Knoten 1 bereits erkannt hat. Außerdem hat sich in diesem Beispiel der Administrator von Knoten 2 entschieden, den Socket nicht zu binden. Dies liegt daran, dass der Administrator von Knoten 2 eine Nachricht an Knoten 1 senden möchte, ohne zu berücksichtigen, welche seiner IP-Adressen und Ports als Quelle von Knoten 2 verwendet werden. Der Socket wählt in diesem Szenario nach dem Zufallsprinzip eine IP-Adresse und einen Port aus.
Vollständige Optionen mit
udp send
finden Sie unter udp send.Knoten 1 bestätigt den Empfang der Nachricht von Knoten 2:
5 bytes from fdde:ad00:beef:0:dac3:6792:e2e:90d8 49153 hello
Socket mit der Peer-Socket-Adresse verbinden und Nachricht zwischen zwei Knoten senden
Dieses Beispiel ähnelt dem vorherigen, zeigt jedoch einige der Flexibilität, die Sie bei der Verwendung von UDP-Sockets haben. Bei dieser Methode verbinden Sie den Socket zuerst mit der Peer-Socket-Adresse. Sie müssen dann nicht bei jedem udp send
-Vorgang die Peer-IP-Adresse und den Port angeben.
Öffnen Sie den UDP-Socket auf Knoten 1.
udp open
DoneBinden Sie den Socket an Knoten 1.
udp bind :: 1234
DoneÖffnen Sie den UDP-Socket auf Knoten 2.
udp open
DoneVerwenden Sie auf Knoten 2 den Befehl
udp connect
, um die Kommunikation mit Knoten 1 zu öffnen.udp connect fdde:ad00:beef:0:bb1:ebd6:ad10:f33 1234
DoneVollständige Optionen mit
udp connect
finden Sie unter udp connectVerwenden Sie auf Knoten 2 den Befehl
udp send
, um eine Nachricht an Knoten 1 zu senden, aber geben Sieip
undport
in derudp send
-Befehlssyntax nicht an.udp send hello
DoneWenn Sie
ip
undport
nicht angeben, verwendet der Befehludp send
die im Befehludp connect
angegebenenip
undport
.