OpenThread 提供 UDP 指令,您可以搭配 Thread 網路使用,以測試 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
指令中指定 IP 位址和通訊埠,則訊息會使用範例通訊端傳送至 udp connect
指令中指定的目的地。如果通訊端尚未繫結,發出 udp send
指令會將通訊端繫結至臨時通訊埠。
「close
」指令
不再需要使用通訊端時,建議您使用 udp close
指令關閉通訊端。
「linksecurity
」指令
udp linksecurity
指令可用於啟用或停用訊息的資料層安全性。
在兩個節點之間傳送訊息
在節點 1 上,開啟 UDP 通訊端。
udp open
Done在節點 1 上,繫結通訊端。
udp bind :: 1234
Done使用
::
代表bind
應使用未指定的 IPv6 位址,因此 UDP/IPv6 堆疊會指派繫結的 IPv6 位址。如需使用udp bind
的完整選項 (例如繫結至網路介面),請參閱 udp 繫結。
1 在節點 2 上,開啟 UDP 通訊端。
udp open
Done
在節點 2 上,傳送簡單訊息給節點 1。
udp send fdde:ad00:beef:0:bb1:ebd6:ad10:f33 1234 hello
Done這個指令假設 Node 2 已找到 Node 1 的位址。此外,在這個範例中,Node 2 的管理員選擇不繫結通訊端。這是因為節點 2 管理員想要傳送訊息至節點 1,而不想把它使用的 IP 位址和通訊埠做為節點 2 來源。在此情況下,通訊端會隨機選擇 IP 位址和通訊埠。
如需
udp send
的完整選項,請參閱 udp 傳送。節點 1 確認收到來自 Node 2 的訊息:
5 bytes from fdde:ad00:beef:0:dac3:6792:e2e:90d8 49153 hello
將通訊端連至對等通訊端位址,然後在兩個節點之間傳送訊息。
此範例與前一個範例類似,但展示了使用 UDP 通訊端的一些彈性。使用此方法時,您必須先將通訊端連線至對等通訊端位址,因此不需要在每次執行 udp send
時指定對等 IP 位址和通訊埠。
在節點 1 上,開啟 UDP 通訊端。
udp open
Done在節點 1 上,繫結通訊端。
udp bind :: 1234
Done在節點 2 上,開啟 UDP 通訊端。
udp open
Done在節點 2 中,使用
udp connect
指令開啟與 Node 1 之間的通訊。udp connect fdde:ad00:beef:0:bb1:ebd6:ad10:f33 1234
Done如需
udp connect
的完整選項,請參閱 udp connect在節點 2 上,使用
udp send
指令傳送訊息至 Node 1,但不使用udp send
指令語法指定ip
和port
。udp send hello
Done如未指定
ip
和port
,udp send
指令會使用udp connect
指令中指定的ip
和port
。