UDP-Funktionalität mit OT CLI testen

Quelle auf GitHub ansehen

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

  1. Öffnen Sie den UDP-Socket auf Knoten 1.

    udp open
    Done
    
  2. Binden Sie den Socket an Knoten 1.

    udp bind :: 1234
    Done
    

    Die Verwendung von :: gibt an, dass bind die nicht angegebene IPv6-Adresse verwenden soll, sodass der UDP/IPv6-Stack die bindende IPv6-Adresse zuweist. Vollständige Optionen mit udp 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
   

  1. Senden Sie auf Knoten 2 eine einfache Nachricht an Knoten 1.

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

    Bei 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.

  2. 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.

  1. Öffnen Sie den UDP-Socket auf Knoten 1.

    udp open
    Done
    
  2. Binden Sie den Socket an Knoten 1.

    udp bind :: 1234
    Done
    
  3. Öffnen Sie den UDP-Socket auf Knoten 2.

    udp open
    Done
    
  4. Verwenden 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
    Done
    

    Vollständige Optionen mit udp connect finden Sie unter udp connect

  5. Verwenden Sie auf Knoten 2 den Befehl udp send, um eine Nachricht an Knoten 1 zu senden, aber geben Sie ip und port in der udp send-Befehlssyntax nicht an.

    udp send hello
    Done
    

    Wenn Sie ip und port nicht angeben, verwendet der Befehl udp send die im Befehl udp connect angegebenen ip und port.