使用 OT CLI 测试 TCP 功能

查看 GitHub 上的源代码

OpenThread 提供与 Thread 网络搭配使用的 TCP 命令,以测试 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 命令,为 TCP 端点分配一个 IPv6 地址和端口。这会绑定用于通信的端点。分配 IPv6 地址和端口也称为“命名端点”。

listen 命令

如需在初始化 TCP 模块后使用示例 TCP 监听器,请运行 tcp listen 命令并指定 IPv6 地址和监听端口。

如需阻止示例 TCP 监听器监听传入的 TCP 连接,请发出 tcp stoplistening 命令。

connect 命令

tcp connect 命令会将示例 TCP 端点连接到一个对等 TCP 端点地址。

send 命令

在两个节点之间建立连接后,发出 tcp send 命令以向对等节点发送消息。

benchmark 命令

在两个节点之间建立 TCP 连接后,可以选择使用 benchmark 命令在节点之间发送大量数据,以测试网络带宽和性能。benchmark 结果中将提供已传输的字节数(以毫秒为单位)和 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
    

验证

根据上面显示的示例步骤,预计会输出以下输出:

  • 在节点 2 运行 tcp connect 命令后,节点 2 应收到消息 TCP: Connection established
  • 然后,节点 1 应接收消息(含示例 IPv6 地址和端口):
    • Accepted connection from [fe80:0:0:0:8f3:f602:bf9b:52f2]:49152
    • TCP: Connection established
  • 在节点 2 运行 tcp send 命令后,节点 1 应收到消息 TCP: Received 5 bytes: hello