使用 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 Goodput 的管道。

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. 在 Node 2 上,初始化 TCP CLI 模組、連線至節點 1,然後傳送 簡單的訊息

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

驗證

根據上述步驟範例,可能的輸出結果如下:

  • 節點 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
  • 節點 2 執行 tcp send 指令後,Node 1 應接收 「TCP: Received 5 bytes: hello」訊息