使用 OT CLI 測試 TCP 功能

前往 GitHub 查看原始碼

OpenThread 提供 TCP 指令,您可以與 Thread 網路搭配使用,以測試 TCP 端點之間的點對點通訊。cli tcp 會提供一個範例 TCP 端點,以及一個所有 tcp 指令互動的範例 TCP 事件監聽器。

指令總覽和後續範例提供如何初始化 TCP 端點和 TCP 事件監聽器範例、如何連線至對等點 TCP 端點,以及如何傳送訊息給對等點的資訊。

TCP 指令

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

tcp help
abort
benchmark
bind
connect
deinit
init
listen
send
sendend
stoplistening
Done
如需所有指令的說明和語法,請參閱 CLI 指令參考資料。 TCP 指令會以 tcp abort 開頭,

init」指令

使用 tcp init 指令初始化 TCP 模組,以開始 TCP 通訊。接著,TCP 模組可以執行許多函式,例如使用 tcp CLI 提供的範例 TCP 事件監聽器監聽傳入連線。如要取消初始化範例 TCP 事件監聽器和範例 TCP 端點,請發出 tcp deinit 指令。

bind」指令

如要在初始化 TCP 模組後繫結範例 TCP 端點,請執行 tcp bind 指令,將 IPv6 位址和通訊埠指派給 TCP 端點。這會將端點繫結至通訊。指派 IPv6 位址和通訊埠這也稱為「為端點命名」。

listen」指令

如要在初始化 TCP 模組後使用範例 TCP 事件監聽器,請執行 tcp listen 指令並指定 IPv6 位址和監聽通訊埠。

如要停止範例 TCP 事件監聽器監聽傳入的 TCP 連線,請發出 tcp stoplistening 指令。

connect」指令

tcp connect 指令會將範例 TCP 端點連結至對等互連 TCP 端點位址。

send」指令

在兩個節點之間建立連線後,請發出 tcp send 指令將訊息傳送至對等點。

benchmark 指令

在兩個節點之間建立 TCP 連線後,您可以視需要使用 benchmark 指令在節點之間傳送大量資料,以測試網路頻寬和效能。benchmark 結果會顯示傳輸位元組數 (以毫秒為單位) 和 TCP 交易量 (TCP)。

abort」指令

如要立即且不明確的結束 TCP 連線,請在任一節點上執行 tcp abort 指令,將 TCP 端點轉換成關閉狀態。

sendend」指令

一個節點將資料傳送至另一個節點後,第一個節點可以發出 tcp sendend 指令,提醒第二個節點不再預期資料。第二個節點也可以將 tcp sendend 傳送至第一個節點。一旦每個節點收到 TCP: Disconnected 訊息,兩個節點之間的 TCP 連線就會中斷。建議您,但不建議在資料移轉完成後發出這個指令。

在兩個節點之間傳送訊息

  1. 在節點 1 上,初始化 TCP CLI 模組,然後使用範例 TCP 事件監聽器監聽傳入連線。

    tcp init
    tcp listen :: 30000
    

    使用 :: 代表 listen 應使用未指定的 IPv6 位址,因此 TCP/IPv6 堆疊會指派 IPv6 位址。通訊埠為 30000。

  2. 在節點 2 上,初始化 TCP CLI 模組,連線至節點 1,然後傳送簡單的訊息。

    tcp init
    tcp connect fe80:0:0:0:a8df:580a:860:ffa4 30000
    tcp send hello
    

驗證

根據上述範例步驟,預期會產生下列結果:

  • 在 Node 2 執行 tcp connect 指令之後,Node 2 應收到 TCP: Connection established 訊息。
  • 接著節點 1 應會收到訊息 (含 IPv6 位址和通訊埠範例):
    • Accepted connection from [fe80:0:0:0:8f3:f602:bf9b:52f2]:49152
    • TCP: Connection established
  • 在 Node 2 執行 tcp send 指令之後,Node 1 應收到訊息 TCP: Received 5 bytes: hello