使用 OT CLI 測試 UDP 功能

前往 GitHub 查看原始碼

OpenThread 提供適用於 Thread 網路的 UDP 指令,測試點對點 以及 UDP 通訊端之間的通訊cli udp 提供一個範例通訊端, 所有 udp 指令都會互動

下方範例示範如何開啟並繫結通訊端、 連線至通訊端,以及如何使用 UDP 通訊端傳送訊息。

UDP 指令

如需 udp 指令的清單,請輸入 help

udp help
bind
close
connect
linksecurity
open
send
Done

open 指令

使用 udp open 指令開啟通訊端以開始 UDP 通訊。 接著,您可以選擇將通訊端繫結至特定 IP 位址和通訊埠。

bind 指令

open 通訊端之後,您可以執行 udp bind 指令來指派 IPv6 位址 以及通往開放通訊端的通訊埠這會繫結通訊端以進行通訊。指派 IPv6 位址和通訊埠也稱為通訊端命名。如果您不直接 bind 通訊端,正在連接通訊端 (udp connect),或在通訊端使用 udp send 指令會將通訊端繫結至暫時通訊埠。

connect 指令

udp connect 指令可用於將範例通訊端連線至對等互連通訊端位址。 接著您可以發出 udp send 指令,傳送訊息給對等開發人員。如果通訊端 尚未繫結,發出 udp connect 指令也會繫結通訊端。

send 指令

udp send 指令會使用範例通訊端將訊息傳送至目的地 您可以使用指令變數來指定 IP 位址和 UDP 通訊埠。 如果 udp send 指令,訊息會使用範例通訊端傳送 附加至 udp connect 指令中指定的目的地。 發出 udp send 指令後,通訊端會將通訊端繫結至暫時通訊埠 表示通訊端尚未繫結。

close 指令

建議您在以下情況下使用 udp close 指令關閉通訊端: 不再需要該通訊端

linksecurity 指令

udp linksecurity 指令可用來啟用或停用訊息的資料連結層安全性。

在兩個節點之間傳送訊息

  1. 在節點 1 上,開啟 UDP 通訊端。

    udp open
    Done
    
  2. 在節點 1 上,繫結至通訊端。

    udp bind :: 1234
    Done
    

    使用 :: 表示 bind 應使用未指定的 IPv6 位址。 讓 UDP/IPv6 堆疊指派已繫結的 IPv6 位址。完整 udp bind 的選項,例如繫結至網路介面 請參閱 udp bind

1 在節點 2 上,開啟 UDP 通訊端。

udp open
   Done
   

  1. 在節點 2 上,傳送簡單的訊息給節點 1。

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

    這個指令假設 Node 2 已探索節點 1 的位址。 此外,在這個例子中,Node 2 的管理員已選擇不要 繫結至通訊端。這是因為節點 2 管理員想傳送 傳送到節點 1 的訊息,但未留意節點使用的 IP 位址和通訊埠 做為節點 2 來源在這種情況下,通訊端會隨機選擇 IP 位址和通訊埠。

    如需 udp send 的完整選項,請參閱 udp send

  2. 節點 1 確認已收到節點 2 的訊息:

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

將通訊端連線至對等互連通訊端位址,然後在兩個節點之間傳送訊息

這個範例與上一個類似,但展現出 高可用性 VPN 通訊端使用這個方法時,您需先將通訊端與 對等互連通訊端位址,您就不需要指定對等互連 IP 位址和通訊埠 每次執行 udp send 時。

  1. 在節點 1 上,開啟 UDP 通訊端。

    udp open
    Done
    
  2. 在節點 1 上,繫結至通訊端。

    udp bind :: 1234
    Done
    
  3. 在節點 2 上,開啟 UDP 通訊端。

    udp open
    Done
    
  4. 在節點 2 上,使用 udp connect 指令開啟與節點 1 的通訊。

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

    如需 udp connect 的完整選項,請參閱 udp Connect

  5. 在節點 2 上,使用 udp send 指令將訊息傳送至節點 1,但不要傳送訊息 在 udp send 指令語法中指定 ipport

    udp send hello
    Done
    

    如未指定 ipportudp send 指令會使用 ipport 您在 udp connect 指令中指定的版本